读书笔记——Accelerated C++ Chapter 9

一、一些定义

1. 成员函数

一个成员函数是类对象的一个成员

2. 作用域运算符

::

3.保护标识符

控制着对一个类类型的成员的访问方式:public、private。在一个类中,保护标识符能以任何的顺序出现,并且可以出现多次。

3. 存取器函数

利用这类函数可以对被隐藏的数据进行简单访问。

4. 构造函数

是一种特殊的成员函数,它定义了对象的初始化方式。它的名称和类本身的名称相同,同时还没有返回类型。不带参数的构造函数被看做是默认构造函数。他的工作通常是确保其对象的数据成员被正确的进行初始化。

Student_info::Student_info():midterm(0),final(0){}

在:和{之间的部分被称为初始化成员列表,他们命令编译程序初始化给定的成员,并且在初始化的时候使用出现在相应括号中的值。

5.构造函数初始化成员列表

构造函数初始化程序是一个用逗号分隔的“member-name(value)”的列表。如果数据成员不是被显示初始化的,那么他们就会被隐式的初始化。成员初始化的先后顺序是由类声明的顺序所决定的。

二、一些规律

1. 如果某个函数会改变一个对象的状态,那么这个函数就应该做为这个对象的成员。

2. 一个构造函数不能被显式的调用。当在创建一个自定义类型的对象时,构造函数会被自动地调用。

3. 如果没有构造函数,编译程序会合成一个。合成的构造函数将初始化数据成员,成员的初始值取决于对象的创建方式。

  • 如果对象属于一种自定义类型,而这种自定义类型定义了一个或多个构造函数,那么合适的构造函数就会完全控制对类的对象的初始化。
  • 如果对象属于内部类型,那么数值初始化方式会将它设为零,而默认初始化方式会给它一个未定义的值。
  • 如果不属于上述两种,则只能是属于未定任何构造函数的自定义类型。在这种情况下,对该对象的数值或默认初始化操作会对它的每一个数据成员进行相应的数值或默认初始化。如果有任一个数据成员属于一种本身具有构造函数的自定义类型,那这个初始化过程都将会是递归的。

4. 构造函数与其他成员函数有两点不同:名称和类本身的名称相同;没有返回类型。

5. 创建新的类对象的时候会有以下几个步骤:

  • 实现分配内存以保存这个对象
  • 按照构造函数初始化程序列表而对对象进行初始化
  • 执行构造函数的函数体   

6.对象的初始化方式:

     实现会初始化每一个对象的全部数据成员——无论这些成员有没有在构造函数初始化程序列表中出现。这个初始化动作是在构造函数的函数体开始执行之前发生的。

7.如果构造函数要退出,他必须首先确保对象已经被创建并且他们的数据成员都已经处于有意义的状态。

 

原文地址:https://www.cnblogs.com/wenhuozhujiangcha/p/3502779.html