C++默认构造函数的一点说明
来源:互联网 发布:区间估计原理 知乎 编辑:程序博客网 时间:2024/05/18 17:44
大多数C++书籍都说在我们没有自己定义构造函数的时候,编译器会自动生成默认构造函数。其实这句话我一直也是深信不疑。但是最近看了一些资料让我有了一点新的认识。
其实我觉得大多数C++书籍之所以这样描述其实是玩了文字游戏的。如果说编译器自动产生的默认构造函数对于我们的类没有任何作用,也就是说在编译器默认生成的这个构造函数里根本没有任何实质性的代码工作,那么这种默认构造其实是可有可无的,所以不妨说编译器其实是为每个类生成了默认构造函数的。
在深度探索C++对象模型中讲了四种关于编译器自动生成默认构造函数的情况,在这四种情况下生成的默认构
造函数里面是由实质的隐含代码操作的:
1.如果类A成员中含有某个类B的对象,恰好类B也显示定义了构造函数,那么在产生类A对象的时候编译器会产生一个默认构造函数,在这个默认构造函数中提供了调用类A构造函数的代码。
2.如果类B继承于类A,且类A显示定义了构造函数,那么在生成类B对象的过程中编译器同样会产生一个默认构造函数,在这个构造函数中提供调用基类A构造函数的代码。
3.如果某个类含有虚函数,那么编译器会自动产生一个默认构造函数以提供虚表指针相关的初始化操作。
4.如果一个类虚继承于其他类,那么同样的编译器会为该类产生默认的构造函数。
除以上四种情况,编译器都不产生默认构造函数,因为就算编译器产生了默认构造函数,然而在该默认构造函数中没
有实质的内容,那么这个默认构造函数也就是没存在的意义的,那么我们说编译器不产生也无妨吧。
0 0
- C++默认构造函数的一点说明
- 关于默认构造函数的一点总结
- 关于默认构造函数的说明
- C++ 中关于默认构造函数的一点困惑
- C++继承与构造函数一点说明
- 关于c++默认的构造函数、析构函数、拷贝构造函数、move函数
- 关于C语言中的main函数的一点说明
- C/C++中System函数的一点说明
- 小朋友学C++(9):构造函数的默认参数
- 关于默认构造函数的一点琢磨--全局变量和局部变量
- 默认的的构造函数
- 【c++】实验说明“转换构造函数”是如何转换的
- C++的默认构造函数
- 默认构造函数的作用
- 类的默认构造函数
- 构造函数的默认调用
- 默认参数的构造函数
- 不存在的默认构造函数
- 【笔记】 《js权威指南》- 第16章 脚本化CSS 16.2 重要的CSS属性(2)
- linux命令--grep
- Scrapy设置之自定义命令
- python文件操作总结(转)
- css练习003--立体菜单
- C++默认构造函数的一点说明
- 谁也不是谁的谁
- js 如何获取一周前当前时间
- 树莓派Linux音乐播放器
- cocos2dx 游戏当中的战争迷雾
- Excel 每张表保存为独立的工作簿
- MongoDB安装,打开及增,删,改,查
- css练习004--导航条
- S3C2440的U-Boot移植