类 7.2访问控制与封装 笔记
使用public、private等访问说明符来加强类的封装性
定义在public说明符之后的成员在整个程序内可被访问,public成员定义类的接口。
定义在private说明符之后的成员可以被类的成员函数访问,但是不能被使用该类的代码访问,private部分封装了(即隐藏了)类的实现细节。
单独运行一个头文件时,要加上int main(){return 0;}
否则会报错: _main,该符号在函数 ___tmainCRTStartup 中被引用
Class 和 struct 关键字唯一的区别是他们的默认访问权限不太一样,对于类内第一个访问说明符之前定义的成员,class默认这些成员是private 的,而struct则默认是public的。
处于统一编程风格的考虑,当我们希望定义的类的成员是public的时, 使用struct;反之,如果希望成员是private的,使用class。
一般来说,作为接口的一部分,构造函数和一部分成员函数应该定义在public说明符之后,而数据成员和作为实现部分的函数则应该跟在private说明符之后。
封装有两个重要的优点:一是确保用户代码不会无意间破坏封装对象的状态;二是被封装的类的具体实现细节可以随时改变,而无需调整用户级别的代码,所以把数据成员的访问权限设置成private 还有另一个好处,这么做能防止由于用户的原因造成数据被破坏。
7.21友元
友元声明只能出现在类定义的内部,但是在类内出现的具体位置不限。友元不是类的成员,也不受他所在区域访问控制级别的约束。
如果我们希望类的用户能够调用某个友元函数,那么我么就必须在友元声明之外在专门对函数进行一次声明。为了友元对类的用户可见,我们通常把友元的声明本身放置在同一个头文件中。