[深度探索C++对象模型]trival constructor和non-trival constructor
分清楚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相关推荐
- 深度探索C++ 对象模型(4)-Default Copy Constructor(2)
没有Default Constructor, class Myclass{ public://... private:int a;char *str; }; 编译器执行的是"位逐次拷贝(Bi ...
- 深度探索C++ 对象模型(3)-默认构造函数Default Constructor
1. Default Constructor只对base class subobjects和member class objects初始化,对data member不做操作 2. 编译器构造Defau ...
- 深度探索C++ 对象模型(4)-Default Copy Constructor(4)
编译器层NRV优化(Named Return Value) 原代码为: class testObj{friend testObj foo(double);public:testObj(){memset ...
- 深度探索C++ 对象模型(4)-Default Copy Constructor(3)
程序转化语意学 1. 显式初始化 原代码为: X x0; void foo_bar() { X x1(x0);X x2 = x0; X x3 = X(x0);} 编译器将产生拷贝构造函数,调用拷贝构造 ...
- 深度探索C++ 对象模型(4)-Default Copy Constructor(1)
3种地方出现: 1.明确的调用拷贝构造函数 class X { }; X tmp; X xx=tmp; 2.作为参数时,对临时变量调用拷贝构造函数 void foo(X x); { }; X xx; ...
- 深度探索C++ 对象模型(3)-默认构造函数Default Constructor续
(1)带有虚函数的类 class Widget { public: virtual int flip() = 0;//..}; void flip(const Widget* widget ) { w ...
- 《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学
<深度探索C++对象模型>读书笔记第五章:构造析构拷贝语意学 对于abstract base class(抽象基类),class中的data member应该被初始化,并且只在constr ...
- [读书笔记]《深度探索C++对象模型》
文章目录 前言 思维导图 第一章 关于对象 第二章 构造函数语意学 构造函数 拷贝构造函数 初始化列表 第三章 Data 语意学 第四章 Function 语意学 非静态成员函数 静态成员函数 虚成员 ...
- 《深度探索C++对象模型》--5 构造析构拷贝 6 执行期语意学
<深度探索C++对象模型>--5构造.析构.拷贝语意学 1.纯虚函数: (1)C++可以定义和调用一个纯虚函数,不过只可以静态调用,不可以由虚拟机制调用. 注意:pure virtu ...
- 深度探索C++ 对象模型(7)-Data member的布局(无继承、继承无多态、继承多态、多层继承)
无继承 继承无多态 继承多态 虚表 : 用来存放基类的每一个虚函数,再加上首位的一个slots(支持RTTI). 每个class object导入一个vptr,提供执行期的链接,使得每一个class ...
最新文章
- flink checkpoint 恢复_Flink断点恢复机制
- [Coderforces600E] Lomsat gelral
- C++ 内置或者复合类型 成员,必须自己定义构造函数来初始化……什么样的是【内置】 【复合类型】
- 大华供应链管理平台_files_锦江全球采购平台SRM系统2.0版本上线 打造更智能的供应链...
- linux useradd 数字,详解linux useradd用户组合权限管理等
- 2020年软件工程现状:Python或将成为第一大编程语言,中国开源涨势最猛
- 寄存器分配图着色_【02】从零开始的卡通渲染-着色篇1
- Python可以这样学(第二季:tkinter案例精选)-董付国-专题视频课程
- kafka 的pom文件_Flink 消费 Kafka 数据
- java鼠标中键_java-selenium鼠标键盘操作Actions类和Robot
- 华为手机长按图片无法下载
- CS269I:Incentives in Computer Science 学习笔记 Lecture 17 评分规则和同辈预测(诚实预报和反馈激励)
- 用adblock来屏蔽百度热搜
- 使用gitbash创建一个翻译词典
- JAVA 建造者模式
- Linux嵌入式开发——vim编辑器
- 006.Sql条件查询
- 蓝桥杯倒计时 | 倒计时10天
- jquery实现图片的跑马灯效果
- jlxLCD12864液晶屏驱动STM32F411
热门文章
- 阿里内推-----校招1
- 从Webpack切换到Vite,实习生再也不去撒尿了
- python 二重积分 辛普森法_二重积分的数值方法.doc
- 大灯照出来的光有阴影_汽车近光灯前有黑色阴影正常吗
- Python基础知识(2): 字符串
- 【JAVA】桌宠开发发现的有趣内容(1) java 图片镜像 反转的方法。
- html怎样做成视频代码,如何在网页上插入视频(用html制作)
- vue 中使用百度cyberplayer播放器遇到的坑
- 【备忘】徐老师hadoop hbase zookeeper spark kafka大数据视频教程
- ppt之剪贴画小技巧