注册 登录
编程论坛 C++教室

本类、父类以及本类中数据成员(也是用户自定义类)的构造及析构函数的调用顺序

crazycoder 发布于 2008-11-21 17:57, 766 次点击
对于本类、父类以及本类中数据成员(也是用户自定义类),在定义一个本类的对象时,程序是先调用父类的构造
函数,再调用数据成员的构造函数,最后再调用本类的构造函数;析构函数调用顺序是,先本类析构函数,再数据
成员的析构函数,最后父类的析构函数。

以如下程序为例:
#include <iostream>
#include <string>
using namespace std;

class A
{
public:
    A() { cout << "A::A()" << endl; }
    ~A() { cout << "A::~A()" << endl; }
};

class B
{
public:
    B() { cout << "B::B()" << endl; }
    ~B() { cout << "B::~B()" << endl; }
};

class C : public B
{
    A a;
public:
    C() { cout << "C::C()" << endl; }
    ~C() { cout << "C::~C()" << endl; }
};

int main()
{
    C c;
    return 0;
}
在我的机器上,上述程序的输出结果是:
B::B()
A::A()
C::C()
C::~C()
A::~A()
B::~B()
1 回复
#2
crazycoder2008-11-22 13:59
忘记了的话不妨过来看一下,高手勿进啦。。。
1