============================================================================
2-0. 关键字explicit被引入C++,提供给程序员一种方法,使他们能够制止“单一参数的constructor”被当做一个conversion运算符。

============================================================================
2-1.Default Constructor的建构操作:
“default constructor...在需要的时候被编译器产生出来”。关键字眼是“在需要的时候”,被谁需要?做什么事情? 期间的差别在于是程序的需要,还是编译器的需要。程序如果有需要,那是程序员的责任,此时并不会合成出一个default constructor。只有当编译器需要它的时候,才会合成它,并且被合成出来的constructor只执行编译器所需的行动。一个nontrivial default constructor就是“编译器所需要”的那种,必要的话会由编译器合成出来。下面讨论nontrivial default constructor的四种情况:
(1)带有“Default Constructor”的Member Class Object。

(2)“带有Default Constructor”的Base Class。

 

(3) “带有一个Virtual Function”的Class。

(4) “带有一个Virtual Base Class”的Class。

总结:

============================================================================
2-2. Copy Constructor的建构操作
有三种情况,会以一个object的内容作为另一个class object的初值。
(1)明确地以一个object的内容作为另一个class object的初值;
(2)当object被当作参数交给某个函数时;
(3)当函数传回一个class object时;

Default Memberwise Initialization
如果class没有提供一个explicit copy constructor时,当class object以“相同class的另一个object”作为初值时,其内部是以所谓的default memberwise initialization手法完成的,也就是把每一个內建的或派生的data member(例如一个指针或一数目组)的值,从某个object拷贝一份到另一个object身上。不过它并不会拷贝其中的member class object,而是以递归的方式施行memberwise Initialization。如下:


Bitwise Copy Semantics(位逐次拷贝)

============================================================================
2-3. 程序转化语意学

============================================================================
2-4. 成员的初始化

============================================================================

Inside The C++ Object Model(二)的更多相关文章

  1. C++学习书籍推荐《Inside the C++ Object Model》下载

    百度云及其他网盘下载地址:点我 作者简介 Stanley B. Lippman is Architect with the Visual C++ development team at Microso ...

  2. inside the C++ Object model总结

    一. 关于对象 1.内联函数:能够除去函数调用的开支,每一处内联函数的调用都是代码的复制.这是一种空间换取时间的做法,若函数代码量大或者有循环的情况下,不宜内联(这件事有些编译器会自动帮你做).在类中 ...

  3. 《深度探索C++对象模型(Inside The C++ Object Model )》学习笔记

    转载:http://dsqiu.iteye.com/blog/1669614 第一章 关于对象 使用class封装之后的布局成本: class并没有增加成本,data members直接内含在每一个c ...

  4. Inside The C++ Object Model - 03

    object Lessons 1.C++中布局以及存取时间上的的额外负担是由virtual引起的:virtual function.virtual base class.或是由于多继承引起的. 2.C ...

  5. Inside The C++ Object Model(五)

    ============================================================================5-0. 一般而言,class 的data me ...

  6. Inside The C++ Object Model(四)

    ============================================================================4-1. Member 的各种调用方式静态成员函 ...

  7. Inside The C++ Object Model(三)

    ============================================================================3-0. 类所占的内存大小受到三个因素的影响:( ...

  8. Inside The C++ Object Model(一)

    ============================================================================1-1. 关键字struct和class的一点区 ...

  9. Inside The C++ Object Model - 04 C++对象模型的一个简单示例

    首先定义一个类X class X { public: X(); X(const X& x); virtual ~X(); virtual foo(); } 再来一段代码: X foobar() ...

随机推荐

  1. function前加运算符实现立即执行函数

    我们知道函数的调用方式通常是FunctionName() 但如果我们尝试为一个"定义函数"末尾加上(),解析器是无法理解的. function msg(){ alert('mess ...

  2. oracle NVL,NVL2,NULLIF,COALESCE

    Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简 ...

  3. zepto 选中select option 的值

    1,网上搜的,感觉蛮好用的,先存着 $('#sel').find('option').not(function() {return !this.selected;}).val();

  4. plsql 工具怎样导出 oracle 表数据

    一.双击 plsql 工具,输入登陆用户.登陆密码以及登陆数据库名称,如下图: 二.菜单 Tools --> Export Tables...,如下图: 三.进入导出界面后,可以选择单个表,进行 ...

  5. Network Monitoring in Software-Defined Networking :A Review(综述)

    来源:IEEE SYSTEMS JOURNAL 发表时间:2018 类型:综述 主要内容:概述了SDN监控的发展,并从收集信息.预处理.传送信息.分析.和描述五个阶段进行解读,并比较了传统网络和SDN ...

  6. 使用Spring AOP实现MySQL读写分离

    spring aop , mysql 主从配置 实现读写分离,下来把自己的配置过程,以及遇到的问题记录下来,方便下次操作,也希望给一些朋友带来帮助.mysql主从配置参看:http://blog.cs ...

  7. Map network drive遇到报错“The network folder specified is currently mapped using a different user name and password”,怎么办?

    --------------------------- Windows --------------------------- The network folder specified is curr ...

  8. Java通过SMS短信平台实现发短信功能

    在项目中使用过发短信的功能,但那个由于公司内部的限制很麻烦,今天在网上找到一个简单的,闲来无事就把它记录如下: 本程序是通过使用中国网建提供的SMS短信平台实现的(该平台目前为注册用户提供5条免费短信 ...

  9. gpg使用说明

    http://blog.163.com/ywz_306/blog/static/13257711201121921452480/

  10. Android: Avoid passing null as the view root

    在做一个应用时把Android SDK从4.4换成6.0,使用LayoutInflater的inflate方法时出现以下情 LayoutInflater.inflate(int resource, V ...