C++指针的一个奇怪应用
class A
{
public:
A(){};
A(int i){cout<<"传入的参数是:"cout<<i<<endl;}
};
int main()
{
A* a;
a[0] = 10;
a[1] = 20;
a[2] = 30;
system("pause");
}
输出结果:
传入的参数是:10
传入的参数是:20
传入的参数是:30
不明白这种用法的原理,既然声明的是指针对象,又没有用new来创建,那怎么删除对象呢?
[解决办法]
这种做法只能玩玩,即使得到正确的数值,你也不要认为这是正确的做法,当然也不要动态释放掉对象
[解决办法]
感觉应该是编译器优化的结果。。。
[解决办法]
该程序中创建的所有对象都是在栈中,不存在动态分配内存,哪里来的new和delete,不知道楼主在担心什么
[解决办法]
1. 使用了未分配的内存
道理和 如下
int *p;
p[0] = 1;
p[2] = 2;