21xrx.com
2024-09-20 00:32:57 Friday
登录
文章检索 我的文章 写文章
C++中protected和private的区别是什么?
2023-06-29 22:16:08 深夜i     --     --
C++ Protected Private 区别

在C++中,类中的访问控制符共有三种:public、private和protected。它们用于控制类中成员变量和成员函数的访问权限。其中,private和protected都用于限制类的成员访问权限,但二者之间还存在一些区别。

private限制了类中的成员只能被类的对象访问,而不能被类的派生类访问。如下面的例子所示:


class Base

private:

  int base_var;

;

class Derived : public Base {

public:

  void someFunction()

    base_var = 10; // error: ‘int Base::base_var’ is private within this context

  

};

在派生类中,我们无法直接访问基类的私有变量和函数。

而protected修饰的成员可以被派生类中的成员函数访问,也可以被派生类的对象访问。如下面的例子所示:


class Base

protected:

  int base_var;

;

class Derived : public Base {

public:

  void someFunction()

    base_var = 10; // OK

  

};

int main()

  Derived d;

  d.base_var = 20; // OK

在这个例子中,我们可以在派生类中的成员函数中访问基类的protected成员,也可以在派生类对象中直接访问基类的protected成员。

总结来说,private限制了类中的成员仅能被类的对象访问,而protected限制了类中的成员可以被类的派生类访问。选择private还是protected,取决于基类的设计者希望是否允许派生类访问基类的成员。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复