C++类相关内容(构造/析构函数,虚/纯虚函数)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++类相关内容(构造/析构函数,虚/纯虚函数),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1772字,纯文字阅读大概需要3分钟。
内容图文
![C++类相关内容(构造/析构函数,虚/纯虚函数)](/upload/InfoBanner/zyjiaocheng/599/dada2634bea24d588dd2d643fe385b1a.jpg)
构造函数
1. 构造函数能不能为虚函数?
构造函数不能为虚函数,原因如下:
a. 构造一个对象的时候,必须知道对象的实际类型;如果构造函数为虚函数,是在运行时确定实际类型的;
b. 虚函数的执行依赖于虚函数表,而虚函数表在构造函数中进行初始化工作,即初始化vptr(虚表指针),让其指向正确的虚函数表;如果构造函数位虚函数,是在运行时初始化虚函数表。
2. 构造函数的调用顺序?
当定义一个派生类对象时,构造函数的调用顺序如下:
基类的构造函数;对象成员的构造函数;派生类的构造函数。
3. 构造函数可以重载吗?
构造函数可以被重载,构造函数可以有多个且可以带参数
析构函数
1. 析构函数能不能为虚函数?
普通类的析构函数不需要定义为虚函数(定义为虚函数需要虚表指针和虚函数表,占用额外的内存)
基类的析构函数必须定义为虚函数,原因如下:
如果有基类指针指向派生类对象,那么用delete释放基类指针时,如果不定义成虚函数,派生类中派生的那部分无法析构,定义成虚函数的话,释放基类指针时可以释放掉子类空间,防止内存泄露。
2. 析构函数的调用顺序?
如果有基类指针指向派生类对象,那么用delete释放基类指针时,析构函数的调用顺序如下:
派生类的析构函数;对象成员的析构函数;基类的析构函数。
3. 析构函数可以重载吗?
析构函数不可以被重载,析构函数只能有一个,且不能带参数
虚函数
定义
虚函数声明要在函数返回值类型之前加virtual关键字;虚函数必须实现,如果不实现,编译器将报错
引入原因
定义一个函数为虚函数是为了允许用基类的指针来调用子类的该函数;虚函数只能借助于指针或者引用来达到多态的效果,虚函数是C++中用于实现多态(polymorphism)的机制。
纯虚函数
定义
在基类的虚函数原型后加“=0”,纯虚函数是在基类中声明的虚函数,要求派生类必须定义自己的实现方法;纯虚函数必须在派生类中重新声明函数(不要后面的=0,否则该派生类也不能实例化)
引入原因
定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的派生类必须实现这个函数。
在很多情况下,基类本身生成对象是不合情理的,含有纯虚拟函数的类称为抽象类,它不能生成对象。
内容总结
以上是互联网集市为您收集整理的C++类相关内容(构造/析构函数,虚/纯虚函数)全部内容,希望文章能够帮你解决C++类相关内容(构造/析构函数,虚/纯虚函数)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。