千家信息网

C++访问权限的示例分析

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本文小编为大家详细介绍"C++访问权限的示例分析",内容详细,步骤清晰,细节处理妥当,希望这篇"C++访问权限的示例分析"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。众所周
千家信息网最后更新 2026年11月03日C++访问权限的示例分析

本文小编为大家详细介绍"C++访问权限的示例分析",内容详细,步骤清晰,细节处理妥当,希望这篇"C++访问权限的示例分析"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

众所周知,C++面向对象的三大特性为:封装,继承和多态。下面我们就先对封装做一些简单的了解。封装是通过C++中的类来完成的,类是一种将抽象转换为用户定义类型的工具。类的定义如下:

class circle{    public: //成员变量      int  m_L;      int  m_H;    public: //成员函数(方法)      double get_Square()      {        return m_L*m_H;      }}

在上面的代码中,我们定义了一个 "circle" 类,主要包含三个部分:成员变量,成员方法和访问控制(public, protect, private)。

  1. public:公共权限,类内可以访问,类外可以访问

  2. protected:保护权限,类内可以访问,类外不可以访问,继承的子类可以访问

  3. private:私有权限,类内可以访问, 类外不可以访问,继承的子类不可以访问

下面我们的对这三点进行测试,以加深印象:

class circle{ public:  int  public_L;  int  public_H; private:   int  private_L;  int  private_H; protected:  int protect_L;  int protect_H; public: //成员函数(方法)  circle() //通过构造函数对成员变量进行赋值  {   public_L = 20, public_H = 30;   private_L = 40, private_H = 50;   protect_L = 60, protect_L = 70;  }  double get_Square()  {   return private_L*private_H;  }};

在定义的 "circle" 类中,由于变量 public_L,public_H 和 get_Square 都是公有权限,因此在类内类外均可访问,下面这两种写法均正确:

circle C1; //实例化类对象double S_1 = C1.get_Square();double S_2 = C1.public_H * C1.public_L;

但是,由于变量 private_L,private_H 均为私有权限, 因此在类内可以访问,即 get_Square() 能够访问,在类外下面的写法是错误的:

int S_3 = C1.private_H * C1.private_L; //Error:成员变量不可访问

同理,对于保护权限的变量,类内可以访问,类外不可访问:

int S_3 = C1.private_H * C1.private_L; //Error:成员变量不可访问

同样,继承的方式也有 public, protect, private 三种:

  • public:公共继承,保持父类中成员的访问权限,继承到子类

  • protected:保护继承,除私有权限外,父类中所有的成员都以保护权限的方式继承到子类

  • private:私有继承,父类中所有的成员都以私有权限的方式继承到子类。

下面看一个例子:

class son1:public circle{}; // 公有继承,保持 circle 父类中的访问权限不变class son2:protected circle{}; // 保护继承,除去 circle 父类中私有权限,其余成员你的的访问权限全部为保护权限class son3:private circle{}; // 私有继承,父类中所有成员的访问权限全部为私有权限

那么通过上述分析,

  • son1 的访问权限与父类一致;

  • son2 只能在类内访问父类中的成员,但是他的子类中也可以通过public或者protected继承的方式访问到父类 "circle" 中的成员

  • son3 只能以私有的方式来继承父类中的成员

所以:

son1 s1;s1.get_Square(); //访问public权限,正确son2 s2;s2.get_Square(); //Error:成员变量不可访问,protected权限son3 s3;s3.get_Square(); //Error:成员变量不可访问,private权限

C++中,类既可以用class 定义,也可以用struct定义。struct与class唯一的区别就在于默认访问权限不同struct默认为公共访问权限,Class默认为私有访问权限。举个例子:

class a{ int m_a; //class 定义,未声明访问权限默认为private};struct b{ int m_b; //struct 定义,未声明访问权限默认为public};

于是:

a c_a;c_a.m_a = 20; // Error: 成员变量不可访问b s_b;s_b.m_b = 20; // 正确,访问public类型变量

C++中类的成员的权限总结:

private:只能由该类的成员函数,友元函数访问,不能被该类的对象访问。

protected:除了private外还能被子类的函数访问,同样不能被该类的对象访问。

public:除了protected外,还能被该类的对象访问。


privateprotectedpublic
类的函数和友元函数√√√
子类的函数×√√
类的对象××√

继承后的可访问性:
private继承后,父类中的所有方法在子类中变成private。

protected继承后,父类>=protected的所有方法(protected,public)在子类中变成protected。

public继承后,父类方法的属性不变。

读到这里,这篇"C++访问权限的示例分析"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

权限 成员 变量 子类 私有 函数 C++ 对象 方法 保护 方式 分析 示例 文章 封装 例子 内容 写法 类型 面的 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 山东特亿宝互联网科技有限公司 互联网巨头科技公司 互联网科技社 善班互联网科技 致聘互联网科技 丰台科技园 互联网 长亮科技互联网金融 互联网教育科技公司vipkid 常德市电业局互联网科技部 互联网科技公司有风险吗 辽宁互联网新科技 互联网媒体平台算高科技产业 智帮互联网科技公司最近动向 江苏苏星互联网科技有限公司 西安有哪些互联网高科技企业 互联网科技企业商标注意事项 广州三三互联网科技有限公司 广东猫王互联网科技有限公司电话 山东亿川互联网科技有限责任公司 武汉亿视互联网科技有限公司 科技创新与互联网经济 中国 科技 互联网 互联网科技的英文 亿策互联网科技 互联网科技有哪些公司 受益于互联网科技的高速发展 徐州市互联网科技有限公司 上海钢联属于互联网科技股吗 智帮互联网科技公司最近动向 保山互联网科技靠谱吗
0