当前位置: 首页 > news >正文

C++ ~ 类的封装

文章目录

  • 1、类概述
  • 2、类的访问控制关键字
  • 3、封装(Encapsulation)
  • 4、代码示例:
    • 4.1、只调用类
    • 4.2、在4.1的基础上调用类的封装
    • 4.3、在4.2的基础上调用引用
    • 4.4、public与private的区别

1、类概述

类是一个新的数据类型,它和结构体有些相似,是由不同数据类型组成的结合体,但类要比结构体增加了操作数据的行为,这个行为就是函数。

2、类的访问控制关键字

1)public: 修饰的成员变量和函数 可以在类的内部和类的外部访问
2)private: 修饰的成员变量和函数 只能在类的内部被访问,不能在类的外部访问
3)protected: 修饰的成员变量和函数 只能在类的内部被访问,不能在类的外部访问, 用在继承里面

3、封装(Encapsulation)

A)封装,是面向对象程序设计最基本的特性。把数据(属性)和函数(操作)合成一个整体,这在计算机世界中是用类与对象实现的。
B)封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
注意:有2层含义(把属性和方法进行封装 对属性和方法进行访问控制)

C++中类的封装
成员变量,C++中用于表示类属性的变量
成员函数,C++中用于表示类行为的函数

4、代码示例:

4.1、只调用类

#include <iostream> //包含C++的头文件 using namespace std; //使用命名空间 std 标准的命名空间(在这个命名空间中定义了很多标准定义) //求圆形面积 class MyCircle // 定义类 { public: double m_r; //属性 成员变量 double m_s; public: double getR() { return m_r; } void setR(double r) //成员函数 { m_r = r; } double getS() { m_s = 3.14 * m_r * m_r; return m_s; } protected: private: }; int main() { MyCircle c1, c2; c1.setR(10); cout << "c1 s:" << c1.getS() << endl; return 0; }

输出结果:

4.2、在4.1的基础上调用类的封装

#include <iostream> using namespace std; //求圆形面积 class MyCircle { public: double m_r; //属性 成员变量 double m_s; public: double getR() { return m_r; } void setR(double r) //成员函数 { m_r = r; } double getS() { m_s = 3.14 * m_r * m_r; return m_s; } protected: private: }; //类的封装的威力 //类封装的成员变量和成员函数 //可以调用类的成员函数 void printCircle01(MyCircle *pC) { cout << "r" << pC->getR() << endl; cout << "s" << pC->getS() << endl; } void printCircle02(MyCircle &myc) { } void printCircle03(MyCircle myc) { } int main() { MyCircle c1, c2; c1.setR(10); cout << "c1 s:" << c1.getS() << endl; c1.setR(11); printCircle01(&c1); c2.setR(20); printCircle01(&c2); return 0; }

输出结果:

4.3、在4.2的基础上调用引用

#include <iostream> using namespace std; //求圆形面积 class MyCircle { public: double m_r; //属性 成员变量 double m_s; public: double getR() { return m_r; } void setR(double r) //成员函数 { m_r = r; } double getS() { m_s = 3.14 * m_r * m_r; return m_s; } protected: private: }; //类的封装的威力 //类封装的成员变量和成员函数 //可以调用类的成员函数 void printCircle01(MyCircle *pC) { cout << "r" << pC->getR() << endl; cout << "s" << pC->getS() << endl; } void printCircle02(MyCircle &myc) { cout << myc.getS() << endl; } void printCircle03(MyCircle myc) { } int main() { MyCircle c1, c2; c1.setR(10); cout << "c1 s:" << c1.getS() << endl; c1.setR(11); printCircle01(&c1); c2.setR(20); printCircle01(&c2); //引用 printCircle02(c2); return 0; }

输出结果:

4.4、public与private的区别

#include <iostream> using namespace std; //求圆形面积 class MyAdvCircle { private: double m_r; //属性 成员变量 double m_s; //相当于你的银行卡密码 public: double getR() //你的名字 { return m_r; } void setR(double r) //成员函数 { m_r = r; } double getS() { m_s = 3.14 * m_r * m_r; return m_s; } }; int main() { MyAdvCircle c1, c2; //c1.m_r = 10; // 无法访问私有类 c1.setR(10); cout << "c1 s:" << c1.getS() << endl; return 0; }

输出结果:

http://www.cnnetsun.cn/news/3714391.html

相关文章:

  • Dan Koe内容创作方法论:如何打造引发深度共鸣的优质内容
  • Visual C++运行库终极修复指南:一站式解决Windows软件兼容性问题
  • 相似三角形
  • 19-物理层-物理层下面的传输介质
  • 论文 AI 工具避坑实录:筛选法则 + 效率质量双达标,杜绝 AI 痕迹、高重复率与学术不端风险
  • FSearch:Linux用户的文件搜索终极解决方案,告别缓慢等待
  • 每次启动,/dev/ada1 的权限都会重置,有什么办法让它权限固定住吗?
  • TTS-Backup终极指南:守护你的桌游模拟器珍贵数据
  • Shell - 文件引入
  • docker安装shipyard
  • 折扣卡分销小程序开发,高峰期核销接口限流优化思路
  • iOS虚拟定位终极指南:免费修改iPhone位置跨平台工具完整教程
  • 2026 中小企业 AI 搜索流量破局:基于轻量化 RAG 架构与语义向量对齐的 GEO 平台工程实战
  • 计算机毕业设计之基于springboot的大学生旧货交易平台的设计与实现
  • 计算机毕业设计之基于SpringBoot的大学生健康管理系统设计与实现
  • 计算机毕业设计之基于SpringBoot的大学生兼职信息服务平台
  • ComfyUI-VideoHelperSuite VHS_VideoCombine节点缺失问题:完整故障排查与解决方案
  • Godot Shader特效:用SCREE_TEXTURE实现简单的屏幕滤镜
  • [kafka]消息中间件Kafka如何保证数据可靠性
  • 传统图像处理算法总结
  • Hibernate一对多关系
  • 如何高效清理重复文件:dupeGuru完整使用指南
  • 根据JDK深入详细学习理解JAVA线程池
  • 3_1_1.JS--函数
  • 选择排序
  • 70+个Adobe Illustrator脚本终极指南:快速提升设计效率的完整教程
  • Python的标准库,random()
  • 剑指Offer_编程题(C#实现)_ 链表中倒数第k个结点
  • 地铁轨道交通无线动能照明方案,站台附属照明无线化改造详解
  • pacemaker控制haproxy容器