C++ ~ 类的封装

发布时间:2026/7/28 18:39:38
C++ ~ 类的封装 文章目录1、类概述2、类的访问控制关键字3、封装Encapsulation4、代码示例4.1、只调用类4.2、在4.1的基础上调用类的封装4.3、在4.2的基础上调用引用4.4、public与private的区别1、类概述类是一个新的数据类型它和结构体有些相似是由不同数据类型组成的结合体但类要比结构体增加了操作数据的行为这个行为就是函数。2、类的访问控制关键字1public: 修饰的成员变量和函数 可以在类的内部和类的外部访问2private: 修饰的成员变量和函数 只能在类的内部被访问,不能在类的外部访问3protected: 修饰的成员变量和函数 只能在类的内部被访问,不能在类的外部访问, 用在继承里面3、封装EncapsulationA封装是面向对象程序设计最基本的特性。把数据属性和函数操作合成一个整体这在计算机世界中是用类与对象实现的。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; }输出结果