1,c++转换函数:显示转换和隐式转换。

隐式转换为程序员提供了很大的变量。比如整形提升,普通类型转换为类类型(operator int())都为程序带来无尽的方便。试想,如果没有整形提升,一个short类型要加上一个int类型。需要手动转换类型才能运算。

但是隐式转换也会遇到问题。当程序出现问题,如果是隐式转换引起的,也很难排查到。所以在程序设计的时候,一定要考虑的非常仔细。

2,类中如果没有声明构造函数,编译器会给类声明一个默认构造函数。为什么要这么做?

原因是:编译器对所有的类的构造都要调用构造函数。所以,如果类设计程序员没有为类声明构造函数,则编译器不得不这么做。并且,编译器声明的默认构造函数什么都不会做(trivial,无用的)。不会将数据成员都清0的。只是为了满足调用规则。

3,

4,如果一个类没有定义构造函数,则默认构造函数则什么都不做。但是如果这个类中有其他类对象,则会调用这个类对象的构造函数。这个调用时编译器安插在默认构造函数之中的。如果这个类中包含多个类对象,则会按照顺序将调用对应对象的构造函数的调用安插到默认构造函数。但本类的其他数据成员仍然不能够做任何初始化操作,这个责任是程序员的。当然,如果本来有定义构造函数。那么编译器还是会将调用其他成员对象的构造函数安插到自定义的构造函数中。

5,如果一个没有自定义构造函数的类继承自一个含有构造函数的基类,则派生类的默认构造函数是非无用的(nontrival)。也就是说,派生类的构造函数会被编译器安插代码,用以调用基类构造函数。如果有自定义构造函数的话,则编译器在基类的自定义构造函数中安插代码,用以调用基类的构造函数。

6,当类中含有虚函数时,我们知道,这样的类对象是含有一个指针指向虚函数表的。那类对象的这个指针是怎么来的?

事实上,这个指针的生成是编译器的责任。它会将生成该指针的代码安插到默认构造函数会程序员自定义构造函数。

7,类的深拷贝和浅拷贝

默认复制构造、默认赋值构造函数都使用浅拷贝。当需要深拷贝时,自己显示定义复制构造函数、赋值构造函数。当类中含有的对象本身支持自定义的复制构造函数、赋值构造函数,那么如果本类的其他数据成员都是基本数据类型的话,那可以不用显示定义复制构造函数、赋值构造函数。因为编译器负责将调用成员对象的复制构造函数、赋值构造函数的代码安插到本类的复制构造函数、赋值构造函数。当然,如果本类中有char*这样的类型,则,需要手动增加本类的复制构造、赋值构造函数。参考c++Primer Plus 第6版第12章。

深度探索c++对象模型 第二章的更多相关文章

  1. 深度探索c++对象模型 第一章

    1,声明与定义. //声明式如下: extern int x;   //对象式(变量式)声明 std::size_t numDigits(int number);  //函数式声明 class Wid ...

  2. Android深度探索-卷1第二章心得体会

    这章介绍了搭建Android开发环境的的搭建,主要是在Linux上搭建Android开发环境总体来说因为都是在Linux下开发的,so,只介绍了在Linux环境下的搭建在搭建过程中全是命令操作,和Wi ...

  3. 《深度探索C++对象模型》读书笔记(一)

    前言 今年中下旬就要找工作了,我计划从现在就开始准备一些面试中会问到的基础知识,包括C++.操作系统.计算机网络.算法和数据结构等.C++就先从这本<深度探索C++对象模型>开始.不同于& ...

  4. 拾遗与填坑《深度探索C++对象模型》3.3节

    <深度探索C++对象模型>是一本好书,该书作者也是<C++ Primer>的作者,一位绝对的C++大师.诚然该书中也有多多少少的错误一直为人所诟病,但这仍然不妨碍称其为一本好书 ...

  5. 拾遗与填坑《深度探索C++对象模型》3.2节

    <深度探索C++对象模型>是一本好书,该书作者也是<C++ Primer>的作者,一位绝对的C++大师.诚然该书中也有多多少少的错误一直为人所诟病,但这仍然不妨碍称其为一本好书 ...

  6. 深度探索C++对象模型

    深度探索C++对象模型 什么是C++对象模型: 语言中直接支持面向对象程序设计的部分. 对于各个支持的底层实现机制. 抽象性与实际性之间找出平衡点, 需要知识, 经验以及许多思考. 导读 这本书是C+ ...

  7. c++学习书籍推荐《深度探索C++对象模型》下载

    百度云及其他网盘下载地址:点我 百度云及其他网盘下载地址:点我 编辑推荐 如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么这本<深度探索C++对象模型>正适合你 作者简介 ...

  8. 读书笔记《深度探索c++对象模型》 概述

    <深度探索c++对象模型>这本书是我工作一段时间后想更深入了解C++的底层实现知识,如内存布局.模型.内存大小.继承.虚函数表等而阅读的:此外在很多面试或者工作中,对底层的知识的足够了解也 ...

  9. 柔性数组-读《深度探索C++对象模型》有感 (转载)

    最近在看<深度探索C++对象模型>,对于Struct的用法中,发现有一些地方值得我们借鉴的地方,特此和大家分享一下,此间内容包含了网上搜集的一些资料,同时感谢提供这些信息的作者. 原文如下 ...

随机推荐

  1. EJB什么,它真的有这么神奇??

    1. 我们不禁要问,什么是"服务集群"?什么是"企业发展"? 现在说EJB 至"服务集群"和"企业发展",然后,说什么是 ...

  2. wpf-MVVM界面自适应:界面自适应及字体自适应

    原文:wpf-MVVM界面自适应:界面自适应及字体自适应 1,界面自适应 界面先划分Region,每个填充Region的View不设置Width属性,即可按照Region划分的比例,自适应屏幕分辨率 ...

  3. 用友u8各版本在输出的时候报错提示:外部数据库驱动程序(1)中的意外错误

    从10月12日起很多U8用户反馈,在各版本U8中输出报表时软件报错,报错内容“外部数据库驱动程序(1)中的意外错误”,经初步分析有以下解决方案:1.卸载微软的补丁:(1)如果是PC操作系统(一般是客户 ...

  4. Qt官方对OpenSSL的编译方法的描述,单独下载的Qt library则一般不带SSL(包括QT FAQ)

    https://wiki.qt.io/MSYS2http://wiki.qt.io/Compiling_OpenSSL_with_MinGWhttps://wiki.qt.io/MinGW-64-bi ...

  5. tensorflow 1.0 学习:模型的保存与恢复

    将训练好的模型参数保存起来,以便以后进行验证或测试,这是我们经常要做的事情.tf里面提供模型保存的是tf.train.Saver()模块. 模型保存,先要创建一个Saver对象:如 saver=tf. ...

  6. 微信小程序把玩(二十六)navigator组件

    原文:微信小程序把玩(二十六)navigator组件 navigator跳转分为两个状态一种是关闭当前页面一种是不关闭当前页面.用redirect属性指定. 主要属性: wxml <naviga ...

  7. eclipse 插件编写(一)

    由于项目开发进程中有一些重复性的代码进行编写,没有任何业务逻辑,粘贴复制又很麻烦且容易出错,故想起做一个eclipse插件来满足一下自己的工作需要,同时记录一下,以供以后参考与共同学习.本文主要讲解一 ...

  8. matplotlib简介

    python的matplotlib包可以帮助我们绘制丰富的图表,有助于我们的数据分析. matplotlib官方文档:matplotlib 本博客所有代码默认导入matplotlib.pyplot和n ...

  9. Qt5---ftp上传功能(可直接克隆某个小模块,查看QT下FTP的socket原理)

    http://blog.csdn.net/freeape/article/details/52802163

  10. linux下编译qt5.6.0静态库(使用./configure --help来看看都有哪些参数。超详细,有每一个模块的说明。如果改变了安装的目录,需要到安装目录下的bin目录下创建文件qt.conf)(乌合之众)good

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...