news 2026/7/28 18:39:36

C++ ~ 类的封装

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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; }

输出结果:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 18:38:09

Dan Koe内容创作方法论:如何打造引发深度共鸣的优质内容

1. 为什么Dan Koe的内容能引发广泛共鸣Dan Koe这个名字在内容创作圈子里越来越频繁地被提及。作为一个长期关注个人成长和创意表达的创作者&#xff0c;Dan Koe的每篇内容几乎都能在社交媒体上引发热烈讨论。这种现象背后&#xff0c;是他对当代人精神需求的精准把握和独特的内…

作者头像 李华
网站建设 2026/7/28 18:37:37

Visual C++运行库终极修复指南:一站式解决Windows软件兼容性问题

Visual C运行库终极修复指南&#xff1a;一站式解决Windows软件兼容性问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过软件无法启动的困扰&…

作者头像 李华
网站建设 2026/7/28 18:36:28

相似三角形

Problem Description 给出两个三角形的三条边&#xff0c;判断是否相似。 Input 多组数据&#xff0c;给出6正个整数&#xff0c;a1,b1,c1,a2,b2,c2&#xff0c;分别代表两个三角形。(边长小于100且无序&#xff09; Output 如果相似输出YES&#xff0c;如果不相似输出NO&#…

作者头像 李华
网站建设 2026/7/28 18:33:31

论文 AI 工具避坑实录:筛选法则 + 效率质量双达标,杜绝 AI 痕迹、高重复率与学术不端风险

随着高校全面上线知网、维普 AIGC 内容溯源检测&#xff0c;单纯用 AI 生成初稿直接提交&#xff0c;极易触发AI 文本标记、重复率超标、学术不端预警三重风险。很多学生盲目选用免费 AI 工具&#xff0c;要么改写痕迹过重被导师一眼识破&#xff0c;要么降重后语句逻辑崩塌、参…

作者头像 李华
网站建设 2026/7/28 18:32:53

FSearch:Linux用户的文件搜索终极解决方案,告别缓慢等待

FSearch&#xff1a;Linux用户的文件搜索终极解决方案&#xff0c;告别缓慢等待 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 你是否曾为在Linux系统中寻找一个文件…

作者头像 李华