yang000
驱动牛犊
驱动牛犊
  • 注册日期2002-01-03
  • 最后登录2002-03-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1114回复:2

vc++的困惑

楼主#
更多 发布于:2002-01-05 19:50
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)是创建一个新的对象成员呢,还是构造已分配了空间的对象成员呢?
我上网,我很菜
yang000
驱动牛犊
驱动牛犊
  • 注册日期2002-01-03
  • 最后登录2002-03-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-01-07 22:48
谢谢shanse的回答.

我明白一些了,分配对象空间是在构造函数调用以前对吗?
我上网,我很菜
shanse
驱动牛犊
驱动牛犊
  • 注册日期2001-12-28
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-01-07 17:05
不知道对不对:

1所示的b(id)是对class B的构造函数进行调用,它只是构造已经分配了空间的对象成员,而不是创建一个新对象。因为它并没有进行资源分配,所以不用进行析构。
2 只是定义了一个局部对象
游客

返回顶部