C++类定义中的关键字public、protected、private的详细介绍
创作时间:
作者:
@小白创作中心
C++类定义中的关键字public、protected、private的详细介绍
引用
CSDN
1.
https://m.blog.csdn.net/wenhao_ir/article/details/145428506
在C++编程中,类成员的访问权限控制是实现封装和信息隐藏的重要机制。本文将详细介绍C++类定义中的关键字public、protected和private,包括它们在类成员和基类成员中的具体应用,帮助读者更好地理解和使用这些访问控制特性。
1. 定义类成员的访问权限属性:public、protected、private
C++类的成员有三种属性,分别是public、protected和private,请分别介绍下。
在C++中,类的成员(包括数据成员和成员函数)可以具有三种访问权限:public
、protected
和 private
。这些访问权限决定了类成员在类内部、派生类以及类外部的可见性和可访问性。
1.1 public
成员
访问权限:
在类内部可以访问。
在派生类中可以访问。
在类外部(通过对象)可以访问。
用途:
用于定义类的接口,即类对外提供的功能。
通常将成员函数(尤其是类的构造函数和公共方法)声明为
public
,以便外部代码可以调用。示例:
class MyClass { public: int publicVar; // 公有成员变量 void publicFunc() { // 公有成员函数 std::cout << "Public Function\n"; } }; int main() { MyClass obj; obj.publicVar = 10; // 可以直接访问 obj.publicFunc(); // 可以直接调用 return 0; }
1.2 protected
成员
访问权限:
在类内部可以访问。
在派生类中可以访问。
在类外部(通过对象)不能访问。
用途:
用于定义类的实现细节,这些细节需要被派生类继承和使用,但不希望暴露给外部代码。
通常将需要被派生类访问的成员变量或成员函数声明为
protected
。示例:
class Base { protected: int protectedVar; // 受保护成员变量 }; class Derived : public Base { public: void accessProtected() { protectedVar = 20; // 可以在派生类中访问 } }; int main() { Derived obj; // obj.protectedVar = 30; // 错误:不能在类外部访问 protected 成员 obj.accessProtected(); // 可以通过公有方法间接访问 return 0; }
1.3 private
成员
访问权限:
在类内部可以访问。
在派生类中不能访问。
在类外部(通过对象)不能访问。
用途:
用于隐藏类的实现细节,确保这些细节不会被外部代码或派生类直接访问或修改。
通常将类的内部状态或辅助函数声明为
private
。示例:
class MyClass { private: int privateVar; // 私有成员变量 void privateFunc() { // 私有成员函数 std::cout << "Private Function\n"; } public: void setPrivateVar(int value) { privateVar = value; // 可以在类内部访问私有成员 privateFunc(); // 可以在类内部调用私有函数 } }; int main() { MyClass obj; // obj.privateVar = 10; // 错误:不能在类外部访问 private 成员 // obj.privateFunc(); // 错误:不能在类外部调用 private 函数 obj.setPrivateVar(10); // 可以通过公有方法间接访问 return 0; }
2. 总结对比
访问权限 | 类内部 | 派生类 | 类外部 |
---|---|---|---|
public | ✔️ | ✔️ | ✔️ |
protected | ✔️ | ✔️ | ❌ |
private | ✔️ | ❌ | ❌ |
3. 使用建议
public
:用于定义类的接口,供外部代码使用。protected
:用于定义类的实现细节,供派生类使用。private
:用于隐藏类的内部实现,确保封装性。
通过合理使用这三种访问权限,可以实现良好的封装性和代码的可维护性。
4. 定义一个类的基类中各成员的属性
在C++中,public Base
中的public
关键字表示继承方式,具体来说,它决定了基类(Base
)中的成员在派生类(Derived
)中的访问权限。
继承方式有三种:
public
继承:
- 基类的
public
成员在派生类中仍然是public
。 - 基类的
protected
成员在派生类中仍然是protected
。 - 基类的
private
成员在派生类中不可访问。 - 这是最常用的继承方式,表示派生类“是一个”基类(is-a 关系)。
protected
继承:
- 基类的
public
和protected
成员在派生类中都变为protected
。 - 基类的
private
成员在派生类中不可访问。 - 这种继承方式较少使用,通常用于限制派生类的外部访问。
private
继承:
- 基类的
public
和protected
成员在派生类中都变为private
。 - 基类的
private
成员在派生类中不可访问。 - 这种继承方式表示派生类“根据基类实现”(implemented-in-terms-of 关系),而不是“是一个”基类。
热门推荐
钠,警惕食物中的慢病元凶!
走进画学:抽象与具象,绘画艺术的双重面貌
如何通过软件测试实训项目提升你的职业技能?
片剂的重量差异及其影响因素
九味宁神颗粒治疗多动症吗有效果吗
职业技能补贴的申请流程是怎样的?
标志设计的艺术性:具象与抽象的完美融合
这些“粗粮”一样升血糖很厉害!想要低血糖,建议你这样吃→
什么是零和博弈
妇联法律援助中介:为妇女提供全方位的法律服务
生态板是什么材质?全面解析其特性与应用
FIRE生活:追求财务自由与提前退休的新型生活方式
绿色能源行业深度解析:定义、趋势与热门岗位
中美较劲拉美港口!智利扩建计划成焦点,中国钱凯港如何应对?
在哪里查看电脑型号?全面解析提升你购买电脑的智慧
老年人骨关节炎,使用药物止痛时,注意用药的“三阶梯”
如何通过逻辑测试提高你的思维能力?【附详细解析】
人类是怎么实现空间认知的?《自然》子刊研究有了新发现
量化打板:一种结合量化交易与传统打板的投资策略
在上海打工,养老保险月最低需缴1476.8元
量化打板是什么意思
社保个人缴费减半:你知道如何享受这一政策吗?
如何在民事诉讼中申请冻结对方银行卡账户
引风机如何分前端后端
资料交接单怎么填写才规范?
南京长江大桥入选不可移动文物,“增高”设想更难实现
MBTI职业性格测试:16种人格类型与职业倾向解析
电信服务商如何实现语音通话的即时翻译?
象鼻山:错峰出游的绝美目的地推荐
3分钟带你了解:什么是供应链管理?供应链管理怎么做?