现在的位置: 首页 > 综合 > 正文

c++ primer 学习笔记 之 第十二章 类

2013年10月09日 ⁄ 综合 ⁄ 共 1138字 ⁄ 字号 评论关闭

第12章 类

12.4.1 构造函数初始化式

      1 初始化const或引用类型数据成员的唯一机会是在构造函数初始化列表中。

      2 在构造函数初始化列表中,成员初始化的次序最好是按各个成员变量在类中声明的顺序初始化。不然会造成用一个未初始化的成员变量去初始化另外一个成员变量。当然也要尽可能的避免使用成员变量来初始化其它成员变量。

12.4.2 默认实参与构造函数

      1 最好在构造函数时提供一个默认实参。

12.4.3 默认构造函数

      1 合成的默认构造函数采用与“变量初始化相同的规则”来初始化其内部成员。

      2 类内部的类类型的成员通过各自的默认构造函数进行初始化。

      3 内置和复合类型的成员,如指针和数组。只有当类对象定义为全局作用域中才进行初始化;对象若定义在局部作用域时,内置和复合类型的成员不进行初始化。

      4 每个构造函数应该为每个内置或复合类型的成员提供初始化。没有初始化内置或复合类型成员的构造函数,将使那些成员处于未定义的状态。

      5 若不给这些成员初始化,除了作为赋值目标外,以任何方式使用一个未定义的成员都是错误的。因此,最好使用构造函数为每个成员设置一个明确的已知状态,这样才不会出现错误。

12.6.1 static 类成员

     1 不像普通的数据成员,static数据成员独立于该类的任意对象而存在;每个static数据成员是与类关联的对象,并不与该类的对象相关联。

     2 使用static成员而不使用全局对象有三个优点:

             1static成员的名字是在类的作用域中,因此可以避免与其它类的成员或全局对象名字冲突。

             2)可以实施封装。static成员可以是私有成员,而全局对象不可以。

             3)通过阅读程序容易看出static成员是与特定类关联的。这种可见性可清晰的显示程序员的意图,也即代码清晰。

      3 static
成员函数是类的组成部分但不是任何对象的组成部分。static成员函数也不会有this指针。此函数可以直接访问所属类的static成员,但不能直接使用非static成员。

      4 可能通过作用域操作符从类中直接调用static成员,或者通过对象、引用或指向该类类型对象的指针间接调用。

      5 static数据成员必须在类定义体的外部定义。它不是通过类的构造函数进行初始化,而是应该在定义时进行初始化。

      6  static数据成员不能用作默认实参,因为它的值不能独立于所属的对象而使用。使用非static数据成员作默认实参,将无法提供对象以获取该成员的值,因而是错误的。

      7 类的静态成员函数可以通过类的对象访问类的非静态数据成员。

抱歉!评论已关闭.