首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++指针的一个奇怪施用

2013-04-09 
C++指针的一个奇怪应用class A{public:A(){}A(int i){cout传入的参数是:coutiendl}}int main()

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;

一样


2. 发生了一个隐式转换a[0] = A(10);
只有一个参数(包括了n个参数,但有n-1个默认参数)的构造函数相当于定义了一个隐式转换。
你可以把你的A::A()写成explic试试看

热点排行