类成员初始化问题
如果我定义一个class A里面的成员包涵了另外一个class B.
Class A
{
B temp;
A(B b)
{
temp=b;
}
....
};
那么在初始化A了之后还需要额外的为B分配内存吗?如temp=new B();这样的?
还是可以直接使用了?
[解决办法]
那要看你是怎么初始化了呀,如果你有一个构造函数给temp也初始化了,那当然是不用。如下一段小test代码
#include <iostream.h> class point1 { public: int x; int y; }; class point2 { public: point1 a; void print() { cout<<a.x<<endl; } }; void main() { point2 Q; Q.print(); }
[解决办法]
初始化A的时候,会调用B的默认构造函数,所以一般不需要显示初始化B了
[解决办法]
当定义一个类对象的时候,有三个构造函数会被执行,如果这个类有父类,和类成员对象,那么当定义对像的时候,首先调用父类的构造函数,然后调用成员对象的构造函数(这个过程就会为成员对象分配内存),然后才是本类的构造函数,所以,你定义你写的类对象的时候,先会调用类成员的构造函数,然后你自己类的构造函数,所以不需要额外的在为B分配空间