1.派生类也不能继承基类的析构函数.
2.与构造函数不同的是,在派生类的析构函数中不用显式地调用基类的析构函数,因为每个类只有一个析构函数,编译器知道如何选择,无需程序员干涉.
3.构造函数和虚构函数的执行顺序:
- 创建派生类对象时,构造函数的执行顺序和继承顺序相同,即先执行基类构造函数,再执行派生类构造函数。
- 而销毁派生类对象时,析构函数的执行顺序和继承顺序相反,即先执行派生类析构函数,再执行基类析构函数.
如下:
1 #include <iostream> 2 3 using namespace std; 4 5 class A { 6 public: 7 A(); 8 ~A(); 9 }; 10 A::A() { cout << "A construction" << endl; } 11 A::~A() { cout << "A destruction" << endl; } 12 13 class B : public A { 14 public: 15 B(); 16 ~B(); 17 }; 18 B::B() { cout << "B construction" << endl; } 19 B::~B() { cout << "B destruction" << endl; } 20 21 class C : public B { 22 public: 23 C(); 24 ~C(); 25 }; 26 C::C() { cout << "C construction" << endl; } 27 C::~C() { cout << "C destruction" << endl; } 28 29 int main() 30 { 31 std::cout << "Hello World!\n"; 32 C c; //先执行A的构造函数然后是B,最后为C. 析构函数则相反 33 return 0; 34 }
结果:
转载来源:http://c.biancheng.net/view/2276.html
扫描二维码关注公众号,回复:
9026543 查看本文章