5.3 类的访问控制

访问说明符

C++中我们用访问说明符来将强类的封装性:

  • public:定义在public说明符之后的成员在整个程序内可被访问,public成员定义类的接口

  • private:定义在private说明符之后的成员可以被类的成员函数访问,但是不能被使用该类的代码访问

struct和class的区别

编码规范:仅当只有数据成员时使用struct,其他一概使用classstruct一般用于定义包含数据的被动式对象,也可以包含相关的常量,但除了存取数据成员外没有其他函数功能,并且存取功能时通过直接访问位域而非函数调用。除了构造函数、析构函数、Initialize()Reset()Validate()等类似的用于设定数据成员的函数外,不能提供其他功能的函数。

structclass唯一的区别在于默认访问权限不一样:

  • struct:成员默认访问权限是public

  • class:成员默认访问权限是private

友元

Tips:为了使友元对类的用于可见,我们通常把友元的声明与类本身放置在同一个头文件中。

类可以允许其他类或者函数访问它的非公有成员,方法是令其他类或者函数成为它的友元。

class Foo {
	// 友元声明一般在类定义开始的位置集中声明
    friend Foo add(const Foo&, const Foo&);
    // ...
};

// Foo接口的非成员组成部分的声明
Foo add(const Foo&, const Foo&);