类成员初始化有关问题

类成员初始化问题
如果我定义一个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分配空间