xiaojunlaiye 发表于 2008-4-16 15:51

关于析构函数 调用的问题,希望哪位可以指点迷津

用new 定义了一个类
然后再类里面又动态定义了一个类

class aaaa
{
        public:
                aaaaaa(){};
                ~aaaaa(){};
        private:
                bbbb  m_bbbb ;
               
}
class bbbb
{
        public:
                bbbb(){};
                ~bbbb(){};
}

main()
{
       
        while(1)
         {
            aaaa *m_aaaa = new aaaa ;
            ......
        }
}

那类bbbb的析构函数什么时候才调用? 必须销毁aaaa的内存才能调用bbbb的析构函数,即得最后执行delete m_aaaa 时候才能调用bbbb的构造函数吗

中学者 发表于 2008-4-16 16:16

析构顺序(且有析构函数):
  派生类 --> 成员类(与声明次序相反) --> 基类(与声明次序相反) --> 虚基类(与声明次序相反)

herolzx 发表于 2008-4-17 08:47

顺序是:
1、bbbb();
2、aaaaaa();
3、~aaaaa();
4、~bbbb();

树上的番茄 发表于 2008-4-28 22:36

LZ的正解

页: [1]

编程论坛