C++ 访问修饰符

访问修饰符

到目前为止,您已经非常熟悉出现在我们所有类实例中的 public 关键字:

实例
  1. #include <iostream>
  2. using namespace std;
  3. class MyClass { // The class
  4. public: // Public access specifier
  5. int x; // Public attribute (int variable)
  6. };
  7. int main() {
  8. MyClass myObj; // Create an object of MyClass
  9. // Access attributes and set values
  10. myObj.x = 15;
  11. // Print values
  12. cout << myObj.x;
  13. return 0;
  14. }

public 关键字是访问修饰符。访问修饰符定义如何访问类的成员(属性和方法)。在上面的例子中,成员是公共的——这意味着可以从代码之外访问和修改它们。

然而,如果我们想让成员们保持隐私,对外界保密,那该怎么办?在 C++ 中,有三个访问修饰:

  • public - 成员可以从课堂外访问
  • private - 无法从类外访问(或查看)成员
  • protected - 成员不能从类外部访问,但是可以在继承的类中访问。稍后您将了解有关继承的更多信息。

在下面的实例中,我们将演示 public 成员和 private 成员之间的差异:

实例
  1. #include <iostream>
  2. using namespace std;
  3. class MyClass {
  4. public: // Public access specifier
  5. int x; // Public attribute
  6. private: // Private access specifier
  7. int y; // Private attribute
  8. };
  9. int main() {
  10. MyClass myObj;
  11. myObj.x = 25; // Allowed (x is public)
  12. myObj.y = 50; // Not allowed (y is private)
  13. return 0;
  14. }

如果试图访问私有成员,则会发生错误:

error: y is private

注意:可以在同一个类中使用公共方法访问类的私有成员。请参阅下一章(封装),了解如何做到这一点。

提示:将类属性声明为 private(尽可能频繁)被认为是一种好的做法。这将减少你自己(或其他人)弄乱代码的可能性。在下一章中,你将了解到更多关于封装的内容。

注意:默认情况下,如果不指定访问修饰符,则类的所有成员都是 private 私有的:

实例
  1. class MyClass {
  2. int x; // Private 属性
  3. int y; // Private 属性
  4. };