7.5.1 构造函数初始化列表
  如果成员是const、引用,或者属于某种未提供默认构造函数的类类型,我们必须通过构造函数初始值列表为这些成员提供初值。
  成员的初始化顺序与他们在类定义中的出现顺序一致。
  如果一个构造函数为所有参数都提供了默认实参,则它实际上也定义了默认构造函数。
7.5.2 委托构造函数
  一个委托构造函数使用它所属类的其他构造函数执行它自己的初始化过程,或者说它把它自己的一些(或者全部)职责委托给了其他构造函数。
  当一个构造函数委托给另一个构造函数时,受委托的构造函数的初始值列表和函数体被依次执行,之后控制权才会还给委托者的函数体。
7.5.3 默认构造函数的作用
  当对象被默认初始化或值初始化时自动执行默认构造函数。
7.5.4 隐式的类类型转换
  如果构造函数只接受一个实参,则它实际上定义了转换为此类类型的隐式转换机制,有时我们把这种构造函数称作转换构造函数。
  编译器只会自动地执行一步类型转换。
  我们可以将只有一个实参的构造函数声明为explicit以抑制隐式转换,并且只能在类内声明构造函数时使用explicit关键字,在类外部定义时不应重复。
  在执行拷贝形式的初始化时也会发生隐式转换。
7.5.5 聚合类
  一个类满足如下条件,我们称它是聚合的:1.所有成员都是public的 2.没有定义任何构造函数 3.没有类内初始值 4.没有基类,也没有virtual函数
7.5.6 字面值常量类
  数据成员都是字面值类型的聚合类是字面值常量类。
  一个类满足下述要求,则它也是一个字面值常量类:1.数据成员都必须是字面值类型 2.类必须至少含有一个constexpr构造函数 3.如果一个数据成员含有类内初始值,则内置类型成员的初始值必须是一条常量表达式;或者如果成员属于某种类类型,则初始值必须使用成员自己的constexpr构造函数。 4.类必须使用析构函数的默认定义,该成员负责销毁类的对象。
  事实上,一个字面值常量类必须至少提供一个constexpr构造函数。
  constexpr构造函数体一般来说应该是空的。
7.6 类的静态成员
  类的静态成员存在于任何对象之外,对象中不包含任何与静态数据成员有关的数据。
  类似的,静态成员函数不与任何对象绑定在一起,它们不包含this指针。  
  我们使用作用域运算符直接访问静态成员。虽然静态成员不属于类的某个对象,但是我们仍然可以使用类的对象、引用或者指针来访问静态成员。
  当在类的外部定义静态成员时,不能重复static关键字,该关键字只能出现在类内部的声明语句。
  类似于全局变量,静态数据成员定义在任何函数之外,一旦它被定义,就将一直存在于程序的整个生命周期中。
  通常情况下,类的静态成员不应该在类的内部初始化。然而,我们可以为静态成员提供const整数类型的类内初始值,不过要求静态成员必须是字面值常量类型的constexpr。
  特别的,静态数据成员的类型可以就是它所属的类类型。而非静态数据成员则受到限制,只能声明成它所属类的指针或引用。静态成员和普通成员的另外一个区别是我们可以使用静态成员作为默认实参。

《C++ Primer》〓〓〓〓〓〓〓〓〓〓【第七章】的更多相关文章

  1. 〓经典文字MUD武侠游戏 我的江湖 〓

    〓经典文字MUD武侠游戏 我的江湖 〓 我的江湖(FFLIB)基于地狱内核扩展,目前已扩展了很多实用功能! 我的江湖玩法 和掌心西游.书剑.东方故事.侠缘.武林等玩法大同小异 但扩展了更多好玩的玩法, ...

  2. C primer plus 练习题 第七章

    1. #include <stdio.h> #define SPACE ' ' #define NEWLINE '\n' int main() { int spaces,newlines, ...

  3. C++Primer 第七章

    //1.定义在类内部的函数是隐式内联的. //2.默认情况下,this指针的类型是指向类类型非常量版本的常量指针.对于类的常量成员函数的声明方法是:将const放置于成员函数的参数列表后,用于修饰th ...

  4. C++ Primer:第七章:类

    定义一个类: class Myclass{ int data_i; string data_str; public: int getdata_i() const { return data_i; } ...

  5. C primer plus 读书笔记第六章和第七章

    这两章的标题是C控制语句:循环以及C控制语句:分支和跳转.之所以一起讲,是因为这两章内容都是讲控制语句. 第六章的第一段示例代码 /* summing.c --对用户输入的整数求和 */ #inclu ...

  6. c++ primer plus 第七章 课后题答案

    #include <iostream> using namespace std; double HAR_AVG(double, double); void TEST(bool); int ...

  7. c primer plus(五版)编程练习-第七章编程练习

    1.编写一个程序.该程序读取输入直到遇到#字符,然后报告读取的空格数目.读取的换行符数目以及读取的所有其他字符数目. #include<stdio.h> #include<ctype ...

  8. C++ Primer Plus学习:第七章

    C++入门第七章:函数-C++的编程模块 函数的基本知识 要使用C++函数,必须完成如下工作: 提供函数定义 提供函数原型 调用函数 库函数是已经定义和编译好的函数,可使用标准库头文件提供原型. 定义 ...

  9. C++ Primer读书笔记(一)第一篇:C++概述,第一章:开始

    1. 主要内容 介绍程序语言的核心思想和C++的基本概念. 印象比较深刻的就是分而治之(divide and conque)的分解思想. 2. 知识广场 1) C++ 文件后缀 cc, cpp,,cx ...

随机推荐

  1. Centos 固定ip

    vim /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO="static" ONBOOT=yes IPADDR=192.168 ...

  2. 《Beginning Java 7》 - 5 - Hash Codes 哈希码

    哈希码和 equals() 都是用来比较的. 1. 哈希码的作用是用来提高比较的效率.因为当比较的对象比较复杂时,equals() 可能很耗时,但哈希码只需要比较一个 int .哈希码常用于集 (se ...

  3. Centos6.9下PXE安装centos 7

    一.简介 这篇文章是无kickstart下安装centos7的,本篇大部分内容同我另外一篇文章相似,只是Centos7 中的isolinux.cfg有一些不太一样需要说明一下. https://www ...

  4. 吴裕雄 python 机器学习——高斯贝叶斯分类器GaussianNB

    import matplotlib.pyplot as plt from sklearn import datasets,naive_bayes from sklearn.model_selectio ...

  5. [ActionScript 3.0] 用TextField的方法getCharIndexAtPoint(x:Number, y:Number):int实现文字在固定范围内显示

    有时候我们遇到一行文字过多时必须固定文字的显示范围,但由于中英文所占字节数不一样,所以不能很好的用截取字符的方式去统一显示范围的大小,用TextField的getCharIndexAtPoint(x: ...

  6. UIView之setNeedsDisplay与drawRect 和 setNeedsLayout与layoutSubViews

    1.UIView的setNeedsDisplay和setNeedsLayout方法 首先两个方法都是异步执行的.而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到  UI ...

  7. 使用ls,du命令进行文件排序

      一. 使用du命令进行大小排序   du -h --max-depth=1 | sort -hr 参数说明: --max-depth:表示要查看几层目录 sort -r:反向显示 sort -h: ...

  8. MD5算法分析

    1. MD5是什么? MD5即Message-Digest Algorithm 5(消息摘要算法第五版)的简称,是当前计算机领域用于确保信息传输完整一致而广泛使用的散列算法之一(又译哈希算法.摘要算法 ...

  9. wordcloud词云--可视化

    import jieba import wordcloud f = open("新时代中国特色社会主义.txt", "r", encoding="gb ...

  10. 基础篇:6)形位公差标注(GD&T标准)-总章

    本章目的:理解GD&T概念,读懂和绘制GD&T图纸.本章是GD&T指引章节. 1.GD&T概念 GD&T  是 Geometric  Dimensioning ...