C++中的访问权限控制:public、protected和private

作者:宇宙中心我曹县2024.04.09 19:55浏览量:19

简介:在C++中,类的成员变量和成员函数可以通过public、protected和private三种访问权限来控制访问。本文将详细解释这三种访问权限的含义、用途以及如何在实际编程中运用它们。

在C++中,访问权限控制是面向对象编程中的一个重要概念。通过public、protected和private三种访问权限,我们可以控制类的成员(包括数据成员和成员函数)的访问权限,确保数据的安全性和代码的健壮性。

public

public是C++中默认的访问权限。如果一个类的成员没有被显式地声明为private或protected,那么它就是public的。public成员可以在任何地方被访问,包括类的外部和子类中。

例如,以下代码定义了一个名为MyClass的类,其中myPublicFunctionmyPublicVariable都是public成员:

  1. class MyClass {
  2. public:
  3. void myPublicFunction() {
  4. // ...
  5. }
  6. int myPublicVariable;
  7. };
  8. int main() {
  9. MyClass obj;
  10. obj.myPublicFunction(); // 正确:可以访问public成员函数
  11. obj.myPublicVariable = 10; // 正确:可以访问public成员变量
  12. }

private

private成员只能被类的成员函数所访问,不能在类的外部访问。这使得private成员成为类的私有数据,只能由类自身来控制其访问和修改。

例如,以下代码定义了一个名为MyClass的类,其中myPrivateFunctionmyPrivateVariable都是private成员:

  1. class MyClass {
  2. private:
  3. void myPrivateFunction() {
  4. // ...
  5. }
  6. int myPrivateVariable;
  7. };
  8. int main() {
  9. MyClass obj;
  10. obj.myPrivateFunction(); // 错误:不能访问private成员函数
  11. obj.myPrivateVariable = 10; // 错误:不能访问private成员变量
  12. }

protected

protected成员的访问权限介于public和private之间。它可以在类的成员函数和子类中访问,但不能在类的外部访问。这使得protected成员成为类的保护数据,可以在类的继承关系中共享和访问。

例如,以下代码定义了一个名为MyClass的类,其中myProtectedFunctionmyProtectedVariable都是protected成员:

  1. class MyClass {
  2. protected:
  3. void myProtectedFunction() {
  4. // ...
  5. }
  6. int myProtectedVariable;
  7. };
  8. class MyDerivedClass : public MyClass {
  9. public:
  10. void accessProtected() {
  11. myProtectedFunction(); // 正确:可以在子类中访问protected成员函数
  12. myProtectedVariable = 20; // 正确:可以在子类中访问protected成员变量
  13. }
  14. };
  15. int main() {
  16. MyClass obj;
  17. obj.myProtectedFunction(); // 错误:不能访问protected成员函数
  18. obj.myProtectedVariable = 10; // 错误:不能访问protected成员变量
  19. MyDerivedClass derivedObj;
  20. derivedObj.accessProtected(); // 正确:在子类中调用访问protected成员的函数
  21. }

总结

在C++中,public、protected和private是三种重要的访问权限控制修饰符。通过它们,我们可以灵活地控制类的成员的访问权限,确保数据的安全性和代码的健壮性。在实际编程中,我们应该根据实际需要选择合适的访问权限,避免数据被不当地访问和修改。同时,我们也应该充分利用protected访问权限,在类的继承关系中实现代码的共享和复用。