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

类成员初始化有关问题

2012-11-21 
类成员初始化问题如果我定义一个class A里面的成员包涵了另外一个class B.Class A{B tempA(B b){tempb}

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

热点排行