📜  什么是公共私有和受保护的统称为 (1)

📅  最后修改于: 2023-12-03 15:21:48.264000             🧑  作者: Mango

什么是公共、私有和受保护的统称?

在面向对象编程中,类的成员可以分为公共、私有和受保护三种不同的访问修饰符,它们的统称为“访问控制”或“访问权限”。

公共

公共成员可以被任何对象访问,不论是类的内部还是外部。一般来说,公共成员包括类的接口和对外提供的服务,例如公共函数、变量等。在类的外部,可以使用“.”操作符访问公共成员。

代码片段:

class Person {
public:
    void setName(string name) { m_name = name; }
    string getName() const { return m_name; }
private:
    string m_name;
};

Person p;
p.setName("John");
cout << p.getName() << endl; // Output: John

上述代码中,setName()getName() 是公共成员函数,在类的外部可以使用对象名调用它们的方法。

私有

私有成员只能被类内部的成员访问,包括其它成员函数和友元函数。私有成员主要用于实现类的内部细节和成员之间的逻辑关系,通常不会对外部暴露。在类的外部,无法直接访问私有成员。

代码片段:

class Person {
public:
    void setName(string name) { m_name = name; }
    string getName() const { return m_name; }
private:
    string m_name;
    int m_age; // 私有成员
};

Person p;
p.m_age = 20; // 编译错误,无法访问私有成员

上述代码中,m_age 是一个私有成员变量,类的外部无法访问它。

受保护

受保护成员可以被子类访问,但不能被外部访问。受保护成员主要用于实现类的继承和多态性。在类的外部,无法直接访问受保护成员,但可以通过继承和派生来访问它。

代码片段:

class Person {
protected:
    int m_age;
};

class Student : public Person {
public:
    void setAge(int age) { m_age = age; } // 在子类中访问受保护成员
};

Student s;
s.setAge(18); // 在子类外部调用公共函数访问受保护成员

上述代码中,m_age 是一个受保护成员变量,在子类中可以访问它。

总结:

  1. 公共成员可以被任何对象访问,包括类的内部和外部。
  2. 私有成员只能被类的内部成员访问,无法被外部对象访问。
  3. 受保护的成员可以被子类访问,但不能被外部访问。