编译器提供默认构造函数的几种情况
2012-07-12 21:05
190 查看
在孙鑫的《VC++深入详解》一书中,看到了这部分内容:
/////////////////////////////////////////////////////////////////////////////////////////
在网友backer的帮助下,我们参看了ANSIC++的ISO标准,并从汇编的角度试验了几种主流编译器的行为,对于编译器提供默认构造函数的行为得出下面的结论:
如果一个类中没有定义任何构造函数,那么只有以下三种情况时,编译器才会提供默认构造函数:
1、如果一个类中有虚拟成员函数或者虚拟继承父类(即有虚拟基类)时;
2、如果类的基类有构造函数(可以使用户定义的构造函数,也可以是编译器提供的默认构造函数);
3、在类中的所有非静态的对象的数据成员,他们所属的类中有构造函数(可以使用户定义的构造函数,也可以是编译器提供的默认构造函数);
/////////////////////////////////////////////////////////////////////////////////////////
在网友backer的帮助下,我们参看了ANSIC++的ISO标准,并从汇编的角度试验了几种主流编译器的行为,对于编译器提供默认构造函数的行为得出下面的结论:
如果一个类中没有定义任何构造函数,那么只有以下三种情况时,编译器才会提供默认构造函数:
1、如果一个类中有虚拟成员函数或者虚拟继承父类(即有虚拟基类)时;
2、如果类的基类有构造函数(可以使用户定义的构造函数,也可以是编译器提供的默认构造函数);
3、在类中的所有非静态的对象的数据成员,他们所属的类中有构造函数(可以使用户定义的构造函数,也可以是编译器提供的默认构造函数);
相关文章推荐
- C++ 对类提供默认构造函数的几种情况
- C++编译器提供默认构造函数的几种情况
- C++ 编译器生成默认构造函数的四种情况
- 编译器自动生成默认构造函数的情况
- 关于默认构造函数的几个错误认识(四种情况下,编译器会生成默认构造函数)
- 四种情况,编译器必须为未声明构造函数之class合成一个默认构造函数
- 编译器不提供缺省构造函数(一般情况)
- C++中,编译器会默认提供的构造函数有哪几种? C++中默认构造函数有几种,详细描述每一种。
- c++ 编译器为class自动合成默认构造函数的四种情况
- C++ 编译器生成默认构造函数的四种情况
- 编译器提供构造函数的情况
- C++ 编译器生成默认构造函数的四种情况
- Error LNK2001 无法解析的外部符号 的几种情况及解决办法 标签: mfc编译器编程c 2011-08-18 22:48 199753人阅读 评论(10) 收藏 举报 分类: Debug
- C++中编译器必须为未申明constructor的class合成一个default constructor的几种情况
- 详解Angular.js指令中scope类型的几种特殊情况
- mysql ab 不同步的几种情况及解决方法
- 微信小程序 引入公共页面的几种情况
- java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承, 请说出他们分别是哪些类?
- 系统方无法提供GDB的情况,如何调查线程死锁
- 加载web-inf下的xml文件,java连接oracle的几种情况,telnet,tnsping,sqlplus的一点学习