读书人

类成员初始化有关问题

发布时间: 2012-11-21 08:23:26 作者: rapoo

类成员初始化问题
如果我定义一个class A里面的成员包涵了另外一个class B.
Class A
{
B temp;
A(B b)
{
temp=b;
}
....
};
那么在初始化A了之后还需要额外的为B分配内存吗?如temp=new B();这样的?
还是可以直接使用了?


[解决办法]
那要看你是怎么初始化了呀,如果你有一个构造函数给temp也初始化了,那当然是不用。如下一段小test代码

C/C++ code
#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分配空间

读书人网 >C++

热点推荐