21xrx.com
2025-04-28 14:29:28 Monday
文章检索 我的文章 写文章
C++中的public、private、protected关键字解析
2023-07-05 02:20:50 深夜i     28     0
C++ public private protected 解析

在C++中,public、private、protected是面向对象编程中常见的关键字。它们用于限制类中成员的访问级别,保证程序的安全性和可维护性。

public关键字表示该成员可以被任何函数或对象访问,包括类内部和类外部。通俗的说,就是公共的,大家都可以使用。比如,可以在类外部直接调用一个类中公共成员的函数或变量。

private关键字表示该成员只能在类内部访问,不能被类外部函数或对象访问。也就是说,私有的,只有自己可以使用。私有成员对于类的实现是严格保密的,除了类本身,其他代码块不能直接访问私有成员。

protected关键字与private十分相似,也是只能在类内部访问,但可以被子类继承。在继承的情况下,子类可以访问父类中的保护成员,但其他代码块仍然不能访问它们。可以认为,保护成员是受限的私有成员,只能在类和子类中使用。

下面来看一段示例代码:

#include <iostream>
using namespace std;
class Student {
public:
  string name;
  void setName(string n)
    name = n;
  
private:
  int age;
protected:
  string gender;
};
class Undergraduate : public Student {
public:
  void setGender(string g)
    gender = g;
  
};
int main()
  Student s;
  s.name = "Tom";
  s.age = 20;
  s.gender = "male"// 错误

在上面的代码中,我们定义了一个学生类Student和一个本科生类Undergraduate。Student中有一个公共的成员name,一个私有的成员age,和一个受保护的成员gender。在Undergraduate中,我们可以直接访问从Student继承下来的gender成员,但无法访问age成员。在main函数中,我们通过Student类实例化一个s对象,但是无法访问age和gender成员,因为它们都是非公共成员。而在Undergraduate类中访问gender成员成功,因为它被声明为受保护的成员,可以被子类访问。

总之,public、private、protected关键字是面向对象编程中非常重要的概念,它们能够帮助程序员隐藏和保护一些重要的数据和方法,增加程序的可维护性和安全性。因此,在编写程序时要注意合理使用这些关键字,减少代码的耦合度,提高代码的复用性。

  
  

评论区