C++默认构造函数在需要的时候被编译器构造出来 解析
来源:互联网 发布:广联达软件教学视频 编辑:程序博客网 时间:2024/06/06 04:15
C++默认构造函数在需要的时候被编译器构造出来:
关键在:在需要的时候。而这个需要的时候说的是编译器需要的时候,并不是程序员需要的时候。
默认构造函数构造的时机是:
1. 有类成员对象,该对象所属类有默认构造函数
2. 当前类为派生类, 该类的基类有默认构造函数
3. 当前类中有虚函数
4. 当前类有虚基类
在第一种情况下:默认构造函数只会将类成员对象按照其默认构造函数构造,而不会去初始化该类的非静态数据成员。因为对非静态数据成员的初始化对程序员来说是需要的,但是对编译器来说,并不是必须的。
第二种情况:根据基类的声明顺序,将会在派生类的构造函数之中,依次调用基类的默认构造函数
第三种情况:需要将该类的虚表构造出来,并且将虚表所在的位置放在类对象的虚表指针中
第四种情况:需要产生一个指针指向虚基类。因为虚基类的机制是:在多重继承中,虚基类只有一个拷贝,所以需要在派生类中有指向该基类所在的地址。
当程序员自己定义了默认构造函数时:那么1-4情况中需要的构造过程会扩张到程序员定义的默认构造函数中。
如果程序员自己定义了构造函数,那么编译器不再会合成默认构造函数,而是把1-4种情况中需要的构造过程扩张到程序员定义的构造函数中。
0 0
- C++默认构造函数在需要的时候被编译器构造出来 解析
- 编译器与默认构造函数
- C++类可以不显示声明构造函数,在创建类对象时编译器自动调用默认的构造函数
- C++编译器合成默认构造函数的条件(合成默认拷贝构造函数雷同)
- C++编译器提供默认构造函数的几种情况
- 编译器提供默认构造函数的几种情况
- C++ 编译器生成默认构造函数的四种情况
- 编译器自动生成默认构造函数的情况
- C++ 编译器生成默认构造函数的四种情况
- C++ 编译器生成默认构造函数的四种情况
- C++编译器合成默认构造函数的真相
- 编译器何时调用默认构造函数
- c++编译器什么时候生成默认构造函数
- C++学习之构造函数的理解--模板形式的构造函数不会遮掩编译器生成的默认构造函数
- C++编译器何时提供默认的构造函数和拷贝构造函数
- C++编译器何时提供默认的构造函数和拷贝构造函数 .
- 关于默认构造函数的几个错误认识(四种情况下,编译器会生成默认构造函数)
- C++中,编译器会默认提供的构造函数有哪几种? C++中默认构造函数有几种,详细描述每一种。
- 2013阿里巴巴软件测试笔试题
- 【Unity3D】Parallax Background循环背景(使用纹理)
- tuple的使用
- 编程之美:第一章 1.14连连看游戏设计
- java中的finalize方法
- C++默认构造函数在需要的时候被编译器构造出来 解析
- 最简单易懂的进程通信入门实例(“共享外存/文件”)
- 黑_马_程_序_员_泛型的理解
- 编程之美:第一章 1.15构造数独
- sqart平方根计算的两种方法实现(累加逼近和二分法)
- Android开发记录
- 南京邮寄
- POJ3984 迷宫问题(BFS 记忆路径)
- 博客开通目的——分享与成长