一个初级的c++问题
定义了一个 class类 CAT,当用它来定义申明一个指针时,或者定义一个数组时,为什么不调用构造函数;而定义变量时就调用构造函数。
calss CAT
{
..........
}
CAT a;
CAT a1[10];
CAT* a2;
三者有什么区别呢?
谢谢!
[解决办法]
指针一般用来保存一个构造好了的对象的地址或一个数组的第一个元素的地址。
[解决办法]
CAT a;//在栈中定义了一个对象 a
CAT a1[10]; // 在栈中定义了10个对象a1[0]、a1[1]……a1[9]
CAT* a2;//创建一个指向CAT类的指针
[解决办法]
在这个时候只在内存分配一个容纳指针的空间
然后要用到动态分配的语法new或malloc
把对象创造出来
这时候就会调用构造函数了
但是如果你在域结束时不delete
那么他是不会自动析构的