构造 析构 虚函数
来源:互联网 发布:nginx listen 编辑:程序博客网 时间:2024/06/06 02:30
构造函数能否声明为虚函数
否
子类继承父类,考虑到构造函数的顺序,对于子类的构造,先是调用父类的构造函数生成父类数据结构,然后再调用子类定义的构造函数,补充其他初始化工作
而虚函数主要用在多态里面,父类的指针或引用指向子类结构,相同的函数声明,体现不同的实现过程,根本上是虚函数表指针机制决定的,虚函数表指针是虚函数的唯一入口
如果父类构造函数声明为虚函数,子类的构造函数和父类同名,那么子类在构造的时候不会调用父类的构造函数,因为声明为虚函数嘛,那么父类的构造将没有执行,父类都没有构造,子类如何生成呢?就像是基础没打,就直接空中楼阁了
构造函数能否调用虚函数
否
构造一个子类时,会先调用父类的构造函数,如果构造函数里面调用了虚函数,因为虚函数的多态性,实际上这个虚函数又会走到子类的这个函数定义中去,然而子类还没有构造,还没有初始化啊,相当于调用了一个还没初始化的对象,产生矛盾
析构函数能否声明为虚函数,即虚析构
是
有些类的构造有内存申请,析构函数要释放申请的内存,如果不用析构,比如一个子类对象赋给一个父类指针,父类指针调用析构时,将只调用父类的析构部分,造成子类内存泄露,虚析构函数的多态性能解决这个问题
动态内存管理的特性决定了必须要用多态实现,必须要用虚析构函数
析构函数能否调用虚函数
否
如果析构函数调用了虚函数,当子类析构时,会先析构子类的部分数据,然后调用父类的析构函数,这里面的虚函数又会走到子类中去,然后子类部分已经先析构了呀,矛盾
0 0
- 构造 析构 虚函数
- 构造函数 虚函数
- 构造,析构, 在构造析构中调用虚函数, 显式析构
- 构造/析构/赋值 函数
- C++构造函数 & 拷贝构造函数 & 派生类的构造函数 & 虚继承的构造函数
- C++构造函数 & 拷贝构造函数 & 派生类的构造函数 & 虚继承的构造函数
- C++构造函数 & 拷贝构造函数 & 派生类的构造函数 & 虚继承的构造函数
- 构造函数调用虚函数
- 构造函数调用虚函数
- 虚函数表 构造函数
- 构造函数调用虚函数
- 构造函数中的虚函数
- 构造函数调用虚函数
- String 构造,析构,复制,拷贝构造函数
- 关于构造,析构,拷贝构造函数,
- 手写两个类,要体现构造,析构,拷贝构造,赋值,虚函数,重载函数等特点。
- 类的构造、析构、赋值构造、拷贝构造函数
- 构造函数、析构函数、虚函数
- shell变量详解
- perl中ftp操作案例
- 计算机操作系统磁盘调度
- Java基础知识—垃圾回收机制
- 原码, 反码, 补码 详解以及负数的按位与运算
- 构造 析构 虚函数
- HDU1231 最大连续子序列和
- Masonry介绍与使用实践:快速上手Autolayout
- oc----内存管理之内存释放原则
- 一个善意的谎言拯救一个团队 (又叫沙漠中的指南针)
- ssh免密码登陆
- String.split的陷阱
- Spring-以序列的方式产生主键值(ORACLE)
- cc1: error: unrecognized command line option "-m64"