1 #include <iostream>
 2 using namespace std;
 3
 4 //构造函数不可以是虚函数,如果是虚函数子类对象中的父类拷贝无法初始化
 5 //继承的本质就是子类中间包含父类对象
 6 //析构是从子类析构然后父类析构,如果是多态并且子类中有分配内存,
 7 //父类对象用子类初始化,则需要把析构函数设成virtual
 8
 9 class myclass
10 {
11 public:
12     char *p;
13
14     virtual void go()
15     {
16         cout << "myclass" << endl;
17     }
18
19     myclass()
20     {
21         p = new char[1024 * 1024 * 100];
22     }
23
24     virtual ~myclass()
25     {
26         delete[] p;
27     }
28 };
29
30 class classX :public myclass
31 {
32 public:
33     int *p;
34     classX()
35     {
36         p = new int[1024 * 1024 * 100];
37     }
38     ~classX()
39     {
40         delete[] p;
41     }
42 };
43
44 void main()
45 {
46     myclass *p = new classX;
47
48     //父类对象用子类初始化,如果析构函数不是virtual则不能调用子类的析构,会造成内存泄漏
49     //加了virtual则会先调用子类的析构再调用父类的析构
50     delete p;
51
52     cin.get();
53 }

转载于:https://www.cnblogs.com/xiaochi/p/8604878.html

109.虚函数与析构构造相关推荐

  1. 关于构造与析构过程中调用虚函数的问题

    今天面试碰到一个构造函数与析构函数中调用需虚函数的问题,当时不太确定,回来敲了一下,发现确实表现的不一样,在网上一查发现另有玄机. 代码: # gcc version 4.8.2 (Ubuntu 4. ...

  2. C++中类的多态与虚函数的使用(转)

    C++中类的多态与虚函数的使用 http://www.cnblogs.com/fangyukuan/archive/2010/05/30/1747449.html 类的多态特性是支持面向对象的语言最主 ...

  3. C++中类的多态与虚函数的使用

    C++中类的多态与虚函数的使用 http://www.cnblogs.com/fangyukuan/archive/2010/05/30/1747449.html 类的多态特性是支持面向对象的语言最主 ...

  4. c++ public 函数名相同_C++虚函数、重载、覆盖

    C++基础(五)虚函数.重载.覆盖.隐藏 虚函数总是跟多态联系在一起,引入虚函数可以使用基类指针对继承类对象进行操作!虚函数:继承接口(函数名,参数,返回值),但是实现不继承(函数体) 非虚函数:继承 ...

  5. c/c++开发,无可避免的自定义类类型(篇三).类与虚函数

    深入而全面了解virtual虚函数与类设计关系 目录 一.virtual 函数说明符的作用 二.virtual 成员函数与普通成员函数 三.不必每个派生类重定义virtual 函数 四.派生类可以兼顾 ...

  6. C++_虚继承_虚函数_纯虚函数(多继承的二义性,多态)

    基本信息 每一个类都有一个虚表,以及虚表指针; 虚表的内容是编译器决定的,虚表中用于存放虚函数的指针, 程序运行时的类型信息等; 每个多态对象都存放着一个指向当前类型的虚表的指针, 该指针在构造函数中 ...

  7. 虚函数和纯虚函数--最通俗易懂的讲解

    上帝是一个程序员,创造了动物(基类),给予了动物吃饭,睡觉,叫唤等通用功能.(封装) 只指定了平均睡觉八小时(虚函数),其中没有指定具体的吃饭,叫唤的行为.(纯虚函数) 然后细分一下,动物有猫狗羊和人 ...

  8. C++对象模型8——构造函数和析构函数中对虚函数的调用、全局对象构造和析构、局部static数组的内存分配

    一.构造函数和析构函数中对虚函数的调用 仍然以https://blog.csdn.net/Master_Cui/article/details/109957302中的代码为例 base3构造函数和析构 ...

  9. C++ 虚函数、虚析构、虚构造(原创纯手码)

    虚函数 1. 前言 2. 具体使用 3. 虚析构 4. 虚构造 5. 纯虚函数 1. 前言 虚函数的概念是在类继承中提出的,为了让派生类重新实现基类的方法.当对象指针/引用指向的类型来调用具体的方法. ...

  10. C++构造函数和析构函数调用虚函数时都不会使用动态联编

    先看一个例子: #include <iostream> using namespace std;class A{ public:A() {show();}virtual void show ...

最新文章

  1. Linux C编程--进程介绍1--进程的创建
  2. HTML 5新元素和CSS
  3. POCO C++库学习和分析
  4. Win2008 R2 IIS7.5+PHP5(FastCGI)+MySQL5环境搭建教程
  5. 整合springMVC
  6. mybits注解详解
  7. 列表相关元素及其属性
  8. javascript 等待指定时间_javascript的单线程和任务队列
  9. 【李宏毅2020 ML/DL】P88-96 Meta Learning – MAML | Reptile
  10. 每秒上百万次的跨数据中心写操作,Uber是如何使用Cassandra处理的?
  11. 数据分析面试:业务题
  12. 吉他指弹入门——双手泛音
  13. app开发人员配置【职责】
  14. 制定自己的工作目标时,应该学会SMART法则
  15. 什么是robots.txt文件
  16. 计算机桌面壁纸小,电脑的桌面壁纸大小怎么设置
  17. cpu过载linux杀进程,Linux CPU过载判断以及分析
  18. 佳驰电子冲刺科创板:年利润3.2亿 源峰磐钰与国家产投是股东
  19. swift Locale
  20. DES加密解密kotlin版

热门文章

  1. cisco dce dte
  2. [ mongoDB ] - 文档型数据库设计模式-如何存储树形数据 [转]
  3. centos下valgrind的安装与使用
  4. java action url,Java ViewHandler.getActionURL方法代码示例
  5. mysql insert or update_MySQL insert or update SQL 示例
  6. java 算法 数组_常见算法总结 - 数组篇
  7. linux shell 多个命令一起执行的几种方法
  8. Linux 服务器之间文件传输
  9. python面值组合_算法题 - 拼凑面额 - Python
  10. io 流 txt本地生成