分清楚user-declared constructor和implict default constructor

首先要知道,如果你没有自定义一个类的构造函数,那么编译器会在暗中声明一个构造器,这个构造器是为了编译器所需要而创造,我们称它为implict default constructor它们实际上并不会真正的产生!!,而不是因为程序需要这个构造器而产生,如果是因为程序需要这个构造器,那么这是程序员的任务了。如果是一个default constructor,那么它就会是一个trival的constructor,但是以下四种情况除外:

第一种:带有default constructor的成员类对象
第二种:带有default constructor的基类
第三种:带有一个virtual function的类
第四种:带有一个virtual base class的类

所以:任何class如果没有定义default constructor(也就是不带参数的那个啦),编译器就会自动帮你合成一个这句话是错的!!!

转载于:https://www.cnblogs.com/lizhenghao126/p/11053713.html

[深度探索C++对象模型]trival constructor和non-trival constructor相关推荐

  1. 深度探索C++ 对象模型(4)-Default Copy Constructor(2)

    没有Default Constructor, class Myclass{ public://... private:int a;char *str; }; 编译器执行的是"位逐次拷贝(Bi ...

  2. 深度探索C++ 对象模型(3)-默认构造函数Default Constructor

    1. Default Constructor只对base class subobjects和member class objects初始化,对data member不做操作 2. 编译器构造Defau ...

  3. 深度探索C++ 对象模型(4)-Default Copy Constructor(4)

    编译器层NRV优化(Named Return Value) 原代码为: class testObj{friend testObj foo(double);public:testObj(){memset ...

  4. 深度探索C++ 对象模型(4)-Default Copy Constructor(3)

    程序转化语意学 1. 显式初始化 原代码为: X x0; void foo_bar() { X x1(x0);X x2 = x0; X x3 = X(x0);} 编译器将产生拷贝构造函数,调用拷贝构造 ...

  5. 深度探索C++ 对象模型(4)-Default Copy Constructor(1)

    3种地方出现: 1.明确的调用拷贝构造函数 class X { }; X tmp; X xx=tmp; 2.作为参数时,对临时变量调用拷贝构造函数 void foo(X x); { }; X xx; ...

  6. 深度探索C++ 对象模型(3)-默认构造函数Default Constructor续

    (1)带有虚函数的类 class Widget { public: virtual int flip() = 0;//..}; void flip(const Widget* widget ) { w ...

  7. 《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学

    <深度探索C++对象模型>读书笔记第五章:构造析构拷贝语意学 对于abstract base class(抽象基类),class中的data member应该被初始化,并且只在constr ...

  8. [读书笔记]《深度探索C++对象模型》

    文章目录 前言 思维导图 第一章 关于对象 第二章 构造函数语意学 构造函数 拷贝构造函数 初始化列表 第三章 Data 语意学 第四章 Function 语意学 非静态成员函数 静态成员函数 虚成员 ...

  9. 《深度探索C++对象模型》--5 构造析构拷贝 6 执行期语意学

     <深度探索C++对象模型>--5构造.析构.拷贝语意学 1.纯虚函数: (1)C++可以定义和调用一个纯虚函数,不过只可以静态调用,不可以由虚拟机制调用. 注意:pure virtu ...

  10. 深度探索C++ 对象模型(7)-Data member的布局(无继承、继承无多态、继承多态、多层继承)

    无继承 继承无多态 继承多态 虚表 : 用来存放基类的每一个虚函数,再加上首位的一个slots(支持RTTI). 每个class object导入一个vptr,提供执行期的链接,使得每一个class ...

最新文章

  1. flink checkpoint 恢复_Flink断点恢复机制
  2. [Coderforces600E] Lomsat gelral
  3. C++ 内置或者复合类型 成员,必须自己定义构造函数来初始化……什么样的是【内置】 【复合类型】
  4. 大华供应链管理平台_files_锦江全球采购平台SRM系统2.0版本上线 打造更智能的供应链...
  5. linux useradd 数字,详解linux useradd用户组合权限管理等
  6. 2020年软件工程现状:Python或将成为第一大编程语言,中国开源涨势最猛
  7. 寄存器分配图着色_【02】从零开始的卡通渲染-着色篇1
  8. Python可以这样学(第二季:tkinter案例精选)-董付国-专题视频课程
  9. kafka 的pom文件_Flink 消费 Kafka 数据
  10. java鼠标中键_java-selenium鼠标键盘操作Actions类和Robot
  11. 华为手机长按图片无法下载
  12. CS269I:Incentives in Computer Science 学习笔记 Lecture 17 评分规则和同辈预测(诚实预报和反馈激励)
  13. 用adblock来屏蔽百度热搜
  14. 使用gitbash创建一个翻译词典
  15. JAVA 建造者模式
  16. Linux嵌入式开发——vim编辑器
  17. 006.Sql条件查询
  18. 蓝桥杯倒计时 | 倒计时10天
  19. jquery实现图片的跑马灯效果
  20. jlxLCD12864液晶屏驱动STM32F411

热门文章

  1. 阿里内推-----校招1
  2. 从Webpack切换到Vite,实习生再也不去撒尿了
  3. python 二重积分 辛普森法_二重积分的数值方法.doc
  4. 大灯照出来的光有阴影_汽车近光灯前有黑色阴影正常吗
  5. Python基础知识(2): 字符串
  6. 【JAVA】桌宠开发发现的有趣内容(1) java 图片镜像 反转的方法。
  7. html怎样做成视频代码,如何在网页上插入视频(用html制作)
  8. vue 中使用百度cyberplayer播放器遇到的坑
  9. 【备忘】徐老师hadoop hbase zookeeper spark kafka大数据视频教程
  10. ppt之剪贴画小技巧