阅读:1114回复:2
vc++的困惑
class A
{ public: A(int id=0): b(id) //....1 {B b(id); //....2 }.... protected: B b; .... } class B {... } 我想问一下上面程序里的B类对象b(类A中的保护数据成员)是局部变量吗?如果是那当A类对象析构时,b为什么没有析构呢(在没有2所示的语句时)? 另外如果没有1所示的b(id),那2所示的B b(id)是创建一个新的对象成员呢,还是构造已分配了空间的对象成员呢? |
|
|
沙发#
发布于:2002-01-07 22:48
谢谢shanse的回答.
我明白一些了,分配对象空间是在构造函数调用以前对吗? |
|
|
板凳#
发布于:2002-01-07 17:05
不知道对不对:
1所示的b(id)是对class B的构造函数进行调用,它只是构造已经分配了空间的对象成员,而不是创建一个新对象。因为它并没有进行资源分配,所以不用进行析构。 2 只是定义了一个局部对象 |
|