经典指数          
原因
2399
浏览数
0
收藏数
 

分析一下程序的运行结果:
class CBase
{
public:
    CBase(){cout<<”constructing CBase class”<<endl;}
    ~CBase(){cout<<”destructing CBase class”<<endl;}
};

class CSub : public CBase
{
public:
    CSub(){cout<<”constructing CSub class”<<endl;}
    ~CSub(){cout<<”destructing CSub class”<<endl;}
 };

void main()
{
    CSub obj;
}

  • constructing CSub class constructing CBase class destructing CSub class destructing CBase class
  • constructing CBase class constructing CSub class destructing CBase class destructing CSub class
  • constructing CBase class constructing CSub class destructing CSub class destructing CBase class
  • constructing CSub class constructing CBase class destructing CBase class destructing CSub class

     举报   纠错  
 
切换
1 个答案

当派生类中不含对象成员时

·

在创建派生类对象时,构造函数的执行顺序是:基类的构造函数→派生类的构造函数;

·

在撤消派生类对象时,析构函数的执行顺序是:派生类的构造函数→基类的构造函数。

当派生类中含有对象成员时

·

在定义派生类对象时,构造函数的执行顺序:基类的构造函数→对象成员的构造函数→派生类的构造函数;

·

在撤消派生类对象时,析构函数的执行顺序:派生类的构造函数→对象成员的构造函数→基类的构造函数。

 
切换
撰写答案