============================================================================
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. 基于ELK5.1(ElasticSearch, Logstash, Kibana)的一次整合

    前言开源实时日志分析ELK平台(ElasticSearch, Logstash, Kibana组成),能很方便的帮我们收集日志,进行集中化的管理,并且能很方便的进行日志的统计和检索,下面基于ELK的最 ...

  2. selenium 3+java 配置全

    之前有配置过java+selenium的环境,感觉将的不够详细,这里重新写一篇,以便日后复习,和大家共享. 一.准备工作. 首先在配置之前需要准备以下:   JDK    Eclipse    Sel ...

  3. Servlet(8)—GenericServlet和改进Servlet实例

    概念genericservlet是个抽象的父类,必须给出子类才能实例化它.它给出了设计servlet的一些骨架,定义了servlet生命周期,还有一些得到名字.配置.初始化参数的方法,其设计的是和应用 ...

  4. pygame 笔记-2 模仿超级玛丽的弹跳

    在上一节的基础上,结合高中物理中的匀加速直线运动位移公式 ,就能做出类似超级玛丽的弹跳效果. import pygame pygame.init() win = pygame.display.set_ ...

  5. ASP.NET Core Docker jexus nginx部署-CentOS实践版

    本文用图文的方式记录了我自己搭建centos+asp.net core + docker + jexus + nginx的整个过程,希望对有同样需求的朋友有一定的参考作用. 本文主要内容如下: cen ...

  6. VBA 判断一个TXT编码方式,再创建一个新的文件,复制数据进去

    如题,先读取一个文本文件判断编码(Unicode  ANSI),就这两种编码然后将txt导入到excel表中,最后处理完成,再创建一个相同编码,不同文件名的txt文件,把新数据放进去 Sub test ...

  7. Mac 删除/卸载 自己安装的python

    官网pkg安装的python版本 第一步:删除框架 sudo rm -rf /Library/Frameworks/Python.framework/Versions/2.7 1 第二步:删除应用目录 ...

  8. 转: linux centos7 下安装maven

    转: https://www.tecmint.com/install-apache-maven-on-centos-7/

  9. linux性能压测工具

    http://benjr.tw/532 http://blog.yufeng.info/archives/2023 https://www.cnblogs.com/zhoujinyi/archive/ ...

  10. EAS开发之挂菜单

        一:以管理员账号登录   二:挂菜单     点击菜单栏"系统"——客户化菜单编辑——选中上级目录——点击 新建——命名.键入唯一编码,把ui.java类的全路径,拷贝到 ...