C++类的构造和析构顺序:
基类成员构造->基类构造->派生类成员构造->派生类构造->派生类析构->派生类成员析构->基类析构->基类成员析构
测试代码:
#include <iostream>
using namespace std;
class Parent_Member {
public:
Parent_Member() {
cout << typeid(Parent_Member).name() << "构造成功!" << endl;
}
~Parent_Member() {
cout << typeid(Parent_Member).name() << "析构成功!" << endl;
}
};
class Son_Member {
public:
Son_Member() {
cout << typeid(Son_Member).name() << "构造成功!" << endl;
}
~Son_Member() {
cout << typeid(Son_Member).name() << "析构成功!" << endl;
}
};
class Parent {
public:
Parent() {
cout << typeid(Parent).name() << "构造成功!" << endl;
}
virtual ~Parent() {
cout << typeid(Parent).name() << "析构成功!" << endl;
}
private:
Parent_Member m_par;
};
class Son :public Parent {
public:
Son() {
cout << typeid(Son).name() << "构造成功!" << endl;
}
~Son() {
cout << typeid(Son).name() << "析构成功!" << endl;
}
private:
Son_Member m_son;
};
void test() {
Parent* p = new Son;
delete p;
}
int main() {
test();
cin.get();
}
测试结果: