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 关系),而不是“是一个”基类。
热门推荐
甘油三酯高吃什么食物降得快 甘油三酯高怎么调理
降甘油三酯最快的食物是什么
陶瓷球轴承:让教育机器人更灵活的关键技术
杜甫的《春望》,你读懂了它的“沉郁顿挫”吗?
杜甫《春望》:战乱中的长安与诗人的忧思
太空电梯:连接天地的未来通途
鹤庆银器锻制技艺:国家级非遗传承与创新
圆白菜与绿甘蓝:同一种蔬菜的多重面貌
水果分级标准发布:看水果质量一目了然,消费者该如何选择?
从《水浒传》看北宋那些事儿
《水浒传》里的“鲁智深”和“武松”,谁才是真正的“硬汉”?
日本公司计划到2050年建造一座可以进入太空的“塔”
金融诈骗应该如何防范
龙须菜:减肥界的“刮油高手”
紧张性头痛如何快速缓解
快速有效的偏头痛舒缓方法与治疗建议
精神紧张引起的头痛怎样缓解
寒假亲子运动指南:让运动成为家庭新时尚
寒假体育作业:如何科学锻炼?
海南中学三亚学校:特色寒假体育作业让运动更有趣
寒假体育作业:跳绳挑战赛,你敢来吗?
自然语言处理中的微调技术:从基本概念到具体实现
香格里拉:8月最佳避暑天堂推荐
庐山避暑胜地的文化探秘之旅
贵州避暑胜地,这个夏天最火!
工作福利待遇包括哪些方面?细数你应得的职场福利
社保包含哪几种保险?一文带你全面了解社会保障体系
丧葬补助金和抚恤金的区别是什么?
揭秘文案女王彭芳:如何写出高转化率的走心文案
揭秘!微信置顶文案的心理密码