C++类防问权限

C++语言引进了三个新的关键字,用于在struct中设置边界:public、private和protected。它们的使用和含义从字面上就能理解。这些存取指定符只在struct声明中使用,它们可以改变在它们之后的所有声明的边界。使用存取指定符,后面必须跟上一个冒号。

public意味着在其后声明的所有成员对所有的人都可以存取。public成员就如同一般的struct成员。比如,下面的struct声明是相同的:

private关键字则意味着,除了该类型的创建者和类的内部成员函数之外,任何人都不能存取这些成员。private在设计者与用户之间筑起了一道墙。如果有人试图存取一个私有成员,就会产生一个编译错误。在上面的例子中,我们可能想让structB中的部分数据成员隐藏起来,有我们自己能存取它们:

虽然foo()函数可以访问B的所有成员,但一般的全局函数如main()却不能,当然其他struct中的成员函数同样也不能。只有那些在这个struct中明确声明了的函数才能访问这些私有成员。对存取指定符的顺序没有特别的要求,它们可以不止一次出现,它们影响在它们之后和下一个存取指定符之前声明的所有成员。

保护(protected) 最后一种存取指定符是protected。protected与private基本相似,只有一点不同:继承的结构可以访问protected成员,但不能访问private成员。