C++基类和派生类的析构函数

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 查看本文章

猜你喜欢

转载自www.cnblogs.com/ArrowToLanguage/p/12286216.html