c++编程题 帮忙分析下输出 谢谢~!

3.阅读下面程序,写出输出结果。
#include <iostream> // 预处理命令
using namespace std; // 使用标准命名空间std

class A
{
public:
A(){cout << "构造A" << endl; } //构造函数
~A(){cout << "析构A" << endl; } //析构函数
};

class B: public A
{
public:
B(){cout << "构造B" << endl; } //构造函数
~B(){cout << "析构B" << endl; } //析构函数
};

int main(void)
{
B obj;
A *p =new A;

return0; // 返回值0, 返回操作系统
}
上面程序的输出结果为:构造A 构造B 构造A 析构B 析构A

小伙伴,在C++中,对象是由“由底向上”构造的,当建立一个对象时,首先调用基类的构造函数,然后调用派生类的构造函数,B继承了A,所以构造函数的顺序是先调用A的构造函数,再调用B的构造函数。而调用析构函数时,首先调用B的析构函数,接着调用A的析构函数。

B obj;  //先调用A的构造函数,再调用B的构造函数,输出结果为:构造A 构造B 
A *p =new A;//只调用A的构造函数,输出结果为:构造A
//因为没有直接调用析构函数,所以是计算机自己调用,首先调用B的析构函数,接着调用A的析构函数,输出为析构B 析构A。

谢谢,请采纳。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-20

望采纳

相似回答