文章目录
- 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; }输出结果: