1. 派生类也不能继承基类的析构函数.
2. 与构造函数不同的是, 在派生类的析构函数中不用显式地调用基类的析构函数, 因为每个类只有一个析构函数, 编译器知道如何选择, 无需程序员干涉.
3. 构造函数和虚构函数的执行顺序:
创建派生类对象时, 构造函数的执行顺序和继承顺序相同, 即先执行基类构造函数, 再执行派生类构造函数.
而销毁派生类对象时, 析构函数的执行顺序和继承顺序相反, 即先执行派生类析构函数, 再执行基类析构函数.
如下:
- #include <iostream>
- using namespace std;
- class A {
- public:
- A();
- ~A();
- };
- A::A() { cout << "A construction" << endl; }
- A::~A() { cout << "A destruction" << endl; }
- class B : public A {
- public:
- B();
- ~B();
- };
- B::B() { cout << "B construction" << endl; }
- B::~B() { cout << "B destruction" << endl; }
- class C : public B {
- public:
- C();
- ~C();
- };
- C::C() { cout << "C construction" << endl; }
- C::~C() { cout << "C destruction" << endl; }
- int main()
- {
- std::cout << "Hello World!\n";
- C c; // 先执行 A 的构造函数然后是 B, 最后为 C. 析构函数则相反
- return 0;
- }
结果:
来源: http://www.bubuko.com/infodetail-3412497.html