c++中public, private, protected的区别_c++访问控制修饰符区别详解

public成员可被类内外及派生类访问,适用于接口函数;2. private成员仅类内部访问,实现数据隐藏;3. protected成员类内和派生类可访问,用于继承控制。

c++中public, private, protected的区别_c++访问控制修饰符区别详解

在C++中,publicprivateprotected 是类的访问控制修饰符,用于限制类成员(变量和函数)的访问权限。它们决定了哪些代码可以访问这些成员,是实现封装和数据隐藏的关键机制。

public 成员:完全公开访问

被声明为 public 的成员可以在任何地方被访问:

  • 类内部可以访问
  • 类外部通过对象直接访问
  • 派生类(子类)也可以访问

适用于那些需要对外提供接口的成员函数或常量。

示例:

class MyClass { public:     int value;     void display() { cout << value; } }; MyClass obj; obj.value = 10;        // 合法 obj.display();         // 合法 

private 成员:仅类内部可访问

private 成员只能在定义它的类内部访问:

立即学习C++免费学习笔记(深入)”;

  • 类成员函数可以访问 private 成员
  • 类外部无法通过对象访问
  • 派生类也无法访问

这是默认的访问级别,适合用于隐藏实现细节,防止外部误操作。

示例:

class MyClass { private:     int secret; public:     void setSecret(int s) { secret = s; }  // 可以访问 }; MyClass obj; // obj.secret = 100;    // 错误!不能从外部访问 obj.setSecret(100);      // 正确,通过 public 函数间接访问 

protected 成员:类内和派生类可访问

protected 成员的访问权限介于 public 和 private 之间:

c++中public, private, protected的区别_c++访问控制修饰符区别详解

维普科创助手

ai驱动的一站式科研资源服务平台

c++中public, private, protected的区别_c++访问控制修饰符区别详解50

查看详情 c++中public, private, protected的区别_c++访问控制修饰符区别详解

  • 类内部可以访问
  • 派生类可以访问
  • 但类外部无法通过对象直接访问

通常用于基类中希望被继承但不对外公开的成员。

示例:

class Base { protected:     int protectedData; };  class Derived : public Base { public:     void setData() { protectedData = 50; }  // 合法,派生类可访问 }; Derived d; // d.protectedData = 50;  // 错误!外部不能访问 

继承中的访问控制变化

当一个类继承另一个类时,基类成员的访问级别会根据继承方式发生变化:

  • public 继承:基类的 public 成员在派生类中仍是 public,protected 保持 protected,private 不可访问
  • protected 继承:基类的 public 和 protected 成员都变为 protected
  • private 继承:所有基类的 public 和 protected 成员都变为 private

注意:无论哪种继承方式,基类的 private 成员都无法被派生类直接访问。

基本上就这些。理解这三种访问控制符的区别,有助于写出更安全、结构更清晰的面向对象代码。关键是根据设计意图选择合适的修饰符:对外接口用 public,内部实现用 private,需要被继承但不公开的用 protected。

c++ 区别 常量 面向对象 封装 成员函数 子类 继承 接口 public private protected 对象

上一篇
下一篇