109.虚函数与析构构造
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.虚函数与析构构造相关推荐
- 关于构造与析构过程中调用虚函数的问题
今天面试碰到一个构造函数与析构函数中调用需虚函数的问题,当时不太确定,回来敲了一下,发现确实表现的不一样,在网上一查发现另有玄机. 代码: # gcc version 4.8.2 (Ubuntu 4. ...
- C++中类的多态与虚函数的使用(转)
C++中类的多态与虚函数的使用 http://www.cnblogs.com/fangyukuan/archive/2010/05/30/1747449.html 类的多态特性是支持面向对象的语言最主 ...
- C++中类的多态与虚函数的使用
C++中类的多态与虚函数的使用 http://www.cnblogs.com/fangyukuan/archive/2010/05/30/1747449.html 类的多态特性是支持面向对象的语言最主 ...
- c++ public 函数名相同_C++虚函数、重载、覆盖
C++基础(五)虚函数.重载.覆盖.隐藏 虚函数总是跟多态联系在一起,引入虚函数可以使用基类指针对继承类对象进行操作!虚函数:继承接口(函数名,参数,返回值),但是实现不继承(函数体) 非虚函数:继承 ...
- c/c++开发,无可避免的自定义类类型(篇三).类与虚函数
深入而全面了解virtual虚函数与类设计关系 目录 一.virtual 函数说明符的作用 二.virtual 成员函数与普通成员函数 三.不必每个派生类重定义virtual 函数 四.派生类可以兼顾 ...
- C++_虚继承_虚函数_纯虚函数(多继承的二义性,多态)
基本信息 每一个类都有一个虚表,以及虚表指针; 虚表的内容是编译器决定的,虚表中用于存放虚函数的指针, 程序运行时的类型信息等; 每个多态对象都存放着一个指向当前类型的虚表的指针, 该指针在构造函数中 ...
- 虚函数和纯虚函数--最通俗易懂的讲解
上帝是一个程序员,创造了动物(基类),给予了动物吃饭,睡觉,叫唤等通用功能.(封装) 只指定了平均睡觉八小时(虚函数),其中没有指定具体的吃饭,叫唤的行为.(纯虚函数) 然后细分一下,动物有猫狗羊和人 ...
- C++对象模型8——构造函数和析构函数中对虚函数的调用、全局对象构造和析构、局部static数组的内存分配
一.构造函数和析构函数中对虚函数的调用 仍然以https://blog.csdn.net/Master_Cui/article/details/109957302中的代码为例 base3构造函数和析构 ...
- C++ 虚函数、虚析构、虚构造(原创纯手码)
虚函数 1. 前言 2. 具体使用 3. 虚析构 4. 虚构造 5. 纯虚函数 1. 前言 虚函数的概念是在类继承中提出的,为了让派生类重新实现基类的方法.当对象指针/引用指向的类型来调用具体的方法. ...
- C++构造函数和析构函数调用虚函数时都不会使用动态联编
先看一个例子: #include <iostream> using namespace std;class A{ public:A() {show();}virtual void show ...
最新文章
- Linux C编程--进程介绍1--进程的创建
- HTML 5新元素和CSS
- POCO C++库学习和分析
- Win2008 R2 IIS7.5+PHP5(FastCGI)+MySQL5环境搭建教程
- 整合springMVC
- mybits注解详解
- 列表相关元素及其属性
- javascript 等待指定时间_javascript的单线程和任务队列
- 【李宏毅2020 ML/DL】P88-96 Meta Learning – MAML | Reptile
- 每秒上百万次的跨数据中心写操作,Uber是如何使用Cassandra处理的?
- 数据分析面试:业务题
- 吉他指弹入门——双手泛音
- app开发人员配置【职责】
- 制定自己的工作目标时,应该学会SMART法则
- 什么是robots.txt文件
- 计算机桌面壁纸小,电脑的桌面壁纸大小怎么设置
- cpu过载linux杀进程,Linux CPU过载判断以及分析
- 佳驰电子冲刺科创板:年利润3.2亿 源峰磐钰与国家产投是股东
- swift Locale
- DES加密解密kotlin版
热门文章
- cisco dce dte
- [ mongoDB ] - 文档型数据库设计模式-如何存储树形数据 [转]
- centos下valgrind的安装与使用
- java action url,Java ViewHandler.getActionURL方法代码示例
- mysql insert or update_MySQL insert or update SQL 示例
- java 算法 数组_常见算法总结 - 数组篇
- linux shell 多个命令一起执行的几种方法
- Linux 服务器之间文件传输
- python面值组合_算法题 - 拼凑面额 - Python
- io 流 txt本地生成