深度探索c++对象模型 学习笔记 chapter2-1 default constructor
来源:互联网 发布:找不到wifi网络 编辑:程序博客网 时间:2024/04/27 18:23
Default Constructor
如果一个类没有显式声明默认构造函数,那么会有一个默认构造函数会为了编译器需要被隐式声明出来。
在如下四种情况:
【1】带有default constructor 的Member class object
【2】带有default constructor 的Base class
【3】带有一个virtual function 的class
【4】带有一个virtual base class的class
会有一个默认构造函数会为了编译器需要被隐式声明出来。
其他情况且没有任何构造函数的类,拥有的是implicit trivial default constructors,实际上并不会被合成出来。
为了编译器的需要是指“调用member object或base class的default constructor”或是“为每一个object初始化其virtual function机制或virtual base class机制”而完成。
在合成的default constructor中,只有base class subobjects和member class objects会被初始化。其他nonstatic data member的初始化需要由程序员保证。
如果程序员已经为此定义了构造函数,则编译器会在其中添加对base class subobjects和member class objects的初始化代码。
两个误解:
1:任何class如果没有定义default constructor,就会被合成出一个来
2:编译器合成出来的default constructor会明确设定“class内每一个data member的默认值”
- 深度探索c++对象模型 学习笔记 chapter2-1 default constructor
- 深度探索C++对象模型-----带有Default Constructor的member class object
- 深度探索C++对象模型--带有default constructor的Base class
- 深度探索C++对象模型-----编译器’何时‘自动合成nontrivial default constructor
- 《深度探索C++对象模型》:copy constructor
- 《深度探索c++对象模型》 学习笔记 - 1 关于对象
- 深度探索c++对象模型学习笔记
- 《深度探索c++对象模型》学习笔记
- 深度探索C++对象模型——学习笔记1
- 深入探索C++对象模型笔记之三 —— 构造函数语意学 (Default Constructor的建构操作)
- Inside the C++ Object Model 深度探索对象模型 1-Object, 2-Constructor
- 《深度探索c++对象模型》 学习笔记 - 前言
- 《深度探索c++对象模型》 学习笔记 - 3 data语义学
- 《深度探索c++对象模型》 学习笔记 - 4 Function语义学
- 《深度探索c++对象模型》学习笔记 - 附录
- 深度探索C++对象模型——学习笔记3
- [深度探索C++对象模型]trival constructor和non-trival constructor
- 深度探索C++对象模型
- 数据库设计:概念结构设计
- 动态执行Java脚本
- 还没有哪个广告让我如此有感触
- MFC 技巧之五
- 1.1.1. 字符串类型
- 深度探索c++对象模型 学习笔记 chapter2-1 default constructor
- Ubuntu下出现Mysql error(2002)的解决方法
- ARM编译器中预定义的宏
- 当网购碰到好彩
- 2
- MFC 技巧之六
- Eclispe RCP 异常处理 显示异常对话框
- c++内置类型
- 窗口法估计瞳孔中心位置