访问控制与封装
使用访问说明符来加强类的封装性。public 和private
使用class或struct关键字
二者的唯一区别就是默认访问权限不太一样:struct的默认是public, class默认是private
友元
类可以允许其他类或函数访问它的非公有成员,方法是通过令其它类或函数成为它的友元。
一般来说,最好在类定义开始或者结束前的位置集中声明友元。
友元的声明仅仅指定了访问的权限,而非通常意义上的函数声明。
友元不存在传递性。每个类负责控制自己的友元类或友元函数。
函数重载和友元
重载函数的友元需要各自单独声明,不是公用的。
关键概念:封装的益处
确保用户代码不会被无意间破坏封装对象的状态。
被封装的类的具体实现细节可以随时改变,而无须调整用户级别的代码。
封装、继承、多态是类的三个特性。
重载成员函数
和非成员函数差不多。
可变数据成员
一个可变数据成员永远不会是const,即使它是const对象的成员。
mutable size_t access_ctr;
类数据成员的初始值
当我们提供一个类内初始值时,必须以符号 = 或花括号表示。
类类型
即使两个类的成员列表完全一致,他们也是不同的类型。
友元声明和作用域