zoukankan      html  css  js  c++  java
  • 虚函数、纯虚函数、虚函数表、虚析构函数(三)

    上一篇说到了virtual关键字的使用范围以及虚函数。

    先上一段代码:

     1 #include "pch.h"
     2 #include <iostream>
     3 using namespace std;
     4 
     5 class Father {
     6 public:
     7     Father() {
     8         cout << "我是父类的构造函数" << endl;
     9     }
    10     ~Father() {
    11         cout << "~我是父类的析构函数" << endl;
    12     }
    13 };
    14 class Child1 : public Father {
    15 public:
    16     Child1() {
    17         cout << "我是子类1的构造函数" << endl;
    18     }
    19     ~Child1() { 
    20         cout << "我是子类1的析构函数" << endl;
    21     }
    22 };
    23 
    24 
    25 int main()
    26 {
    27     Father *fa = new Child1();
    28     delete fa;
    29 }

    输出是:

    我是父类的构造函数
    我是子类1的构造函数
    ~我是父类的析构函数

    可见子类的析构函数并未被调用,因为delete掉的是指向父类的指针,子类的对象还是仍然存在,这是很危险的,子类的那一片内存空间并未被释放。

    想要同时调用子类的析构函数,我们需要将父类的析构函数设置成为虚析构函数

  • 相关阅读:
    Less:优雅的写CSS代码
    线程池(ThreadPool)
    TiDB
    Docker实现CentOS容器SSH远程登录
    Oracle-Hints详解
    Oracle sql执行计划解析
    引擎基本服务接口API介绍
    ssh远程连接docker中linux(ubuntu/centos)
    自制操作系统
    kafka-net
  • 原文地址:https://www.cnblogs.com/leoncumt/p/10491814.html
Copyright © 2011-2022 走看看