13.x - 小结与测试 - 面向对象基础
- 使用类可以创建自定义的数据类型,并且将数据和函数和该数据类型绑定并配合使用。类中的数据和函数称为成员,而选择类中的成员需要使用成员选择运算符
.
(在使用指针访问时,使用->
运算符)。
- 成员访问修饰符允许用户限定类成员可以被谁访问。
public
成员可以被任何人使用。private
成员只能被类中的其他成员访问。稍后我们还会介绍protected
成员。默认情况下,类成员都是private
的,而结构体的成员都是public
的。
- 封装是将成员设为private的过程,这样它们就不能被直接访问。这有助于保护类不被滥用。
- 构造函数是一种特殊类型的函数,使用它可以初始化该类的对象。不具有任何形参(或具有全部默认形参)的构造函数是默认构造函数。当用户没有提供任何初始化值的时候,默认函数将会被调用。你应该至少为类提供一个构造函数。
- 成员初始化值列表允许用户在构造函数中对成员变量进行初始化(而不必为每个成员变量赋值)。
- 非静态成员初始化允许你在声明成员时为变量直接指定默认值。
- 析构函数是另外一类特殊的构造函数,使用它可以让类对自己进行清理。任何内存回收或退出流程都应该在析构函数中执行。
- 所有的成员函数都有一个隐藏的指针
this
,this
指针指向这个对象本身。大多数情况下你并不需要直接访问该指针,但是偶尔也会有这样的需求。
- 一个好的编程实践是这样的:将类的定义放置在其同名的头文件内,然后将类的成员定义在另一个与类同名的
.cpp
文件中。 这样有助于避免循环依赖。
- 如果成员函数不修改类的状态,则可以(也应该)被声明为const类型。const 对象也只能调用const成员函数。
13.13 - 静态成员变量 & 13.14 - 静态成员函数
- 在表达式求值,或者传递、返回值时,可以使用匿名对象。
- 你也可以在类中嵌套类型。通常是枚举类型,不过如有需要也可以是其他类型(或者其他类)。