21xrx.com
2024-11-10 00:28:26 Sunday
登录
文章检索 我的文章 写文章
C++访问控制权限详解
2023-06-24 05:16:16 深夜i     --     --
C++ 访问控制 权限 详解 类型限定符

C++是一门面向对象的编程语言,访问控制权限是面向对象编程中的一个重要概念。C++通过访问控制权限来管理类中数据成员和成员函数的访问权限,以及类的继承关系和派生类对基类成员的访问权限。本文将详细介绍C++的访问控制权限。

C++中的访问控制权限分为三种:public、private、protected。public表示公开的成员,可以在类外部和派生类中访问;private表示私有成员,只能在当前类中访问,不能在类外部和派生类中访问;protected表示受保护的成员,可以在当前类和派生类中访问,但不能在类外部访问。

在C++中,访问控制权限的声明分别放在类的三个部分:public、private、protected。例如:


class MyClass {

public:

  int x;       // 公开成员

  void show();    // 公开成员函数

private:

  int y;       // 私有成员

  void test();    // 私有成员函数

protected:

  int z;       // 受保护成员

  void demo();    // 受保护成员函数

};

在这个例子中,x和show()是公开成员,在类的任何地方都可以访问;y和test()是私有成员,只能在当前类的成员函数中访问;z和demo()是受保护成员,只能在当前类和其派生类的成员函数中访问。

派生类继承基类的成员时,基类成员的访问控制权限会影响派生类的访问权限。如果基类成员是public或protected,派生类继承后也会是public或protected;如果基类成员是private,派生类继承后也会是private。

例如:


class MyBase

public:

  int x;

private:

  int y;

protected:

  int z;

;

class MyDerived : public MyBase {

public:

  void show() 不能访问基类的private成员

    z = 30;    // 可以访问基类的protected成员

  

};

在这个例子中,MyDerived类继承了MyBase类的成员,并在show()成员函数中访问了基类的成员。由于MyBase的x成员是public的,因此MyDerived也可以访问;MyBase的y成员是private的,因此MyDerived不能访问;MyBase的z成员是protected的,因此MyDerived可以访问。

需要注意的是,C++中的友元函数和友元类可以访问当前类的所有成员,即使是private成员。但是,友元函数和友元类不是当前类的成员,因此不能被继承。

总之,访问控制权限是C++面向对象编程中重要的概念。掌握好访问控制权限可以保证程序的安全性和可维护性,同时也可以更好地设计类的继承关系和成员访问权限。

  
  

评论区

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