标签:读写权限 out ted 代码 示例 生活 私有 oid private
封装是C++面向对象三大特性之一
1.封装的意义
封装的意义:
(1)将属性和行为作为一个整体,表现生活中的事物
(2)将属性和行为加以权限控制
封装意义一:
?在设计类的时候,属性和行为写在一起,表现事物
语法:class 类名{ 访问权限:属性/行为 };
示例1:设计一个圆类,求圆的周长
示例代码:
1 #include 2 using namespace std;
3 //圆周率
4 const double PI = 3.14;
5
6 //1、封装的意义
7 //将属性和行为作为一个整体,用来表现生活中的事物
8
9 //封装一个圆类,求圆的周长
10 //class代表设计一个类,后面跟着的是类名
11 class Circle
12 {
13 public: //访问权限 公共的权限
14
15 //属性
16 int m_r;//半径
17
18 //行为
19 //获取到圆的周长
20 double calculateZC()
21 {
22 //2 * pi * r
23 //获取圆的周长
24 return 2 * PI * m_r;
25 }
26 };
27
28 int main()
29 {
30 //通过圆类,创建圆的对象
31 // c1就是一个具体的圆
32 Circle c1;
33 c1.m_r = 10; //给圆对象的半径 进行赋值操作
34
35 //2 * pi * 10 = = 62.8
36 cout "圆的周长为: " endl;
37
38 system("pause");
39
40 return 0;
41 }
示例2:设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号
示例代码:
1 #include 2 using namespace std;
3 //学生类
4 class Student
5 {
6 public:
7 void setName(string name)
8 {
9 m_name = name;
10 }
11 void setID(int id)
12 {
13 m_id = id;
14 }
15
16 void showStudent()
17 {
18 cout "name:" " ID:" endl;
19 }
20 public:
21 string m_name;
22 int m_id;
23 };
24
25 int main()
26 {
27
28 Student stu;
29 stu.setName("KaguraSakura");
30 stu.setID(2119);
31 stu.showStudent();
32
33 system("pause");
34
35 return 0;
36 }
封装意义二:
类在设计时,可以把属性和行为放在不同的权限下,加以控制
访问权限有三种:
(1). public 公共权限
(2). protected 保护权限
(3). private 私有权限
示例代码:
1 #include 2 using namespace std;
3 //三种权限
4 //公共权限 public 类内可以访问 类外可以访问
5 //保护权限 protected 类内可以访问 类外不可以访问
6 //私有权限 private 类内可以访问 类外不可以访问
7
8 class Person
9 {
10 //姓名 公共权限
11 public:
12 string m_Name;
13
14 //汽车 保护权限
15 protected:
16 string m_Car;
17
18 //银行卡密码 私有权限
19 private:
20 int m_Password;
21
22 public:
23 void func()
24 {
25 m_Name = "张三";
26 m_Car = "拖拉机";
27 m_Password = 123456;
28 }
29 };
30
31 int main()
32 {
33 Person p;
34 p.m_Name = "李四";
35 //p.m_Car = "奔驰"; //保护权限类外访问不到
36 //p.m_Password = 123; //私有权限类外访问不到
37
38 system("pause");
39
40 return 0;
41 }
2.struct和class区别
在C++中 struct和class唯一的区别就在于默认的访问权限不同
区别:
struct 默认权限为公共
class 默认权限为私有
示例代码:
1 #include 2 using namespace std;
3 class C1
4 {
5 int m_A; //默认是私有权限
6 };
7
8 struct C2
9 {
10 int m_A; //默认是公共权限
11 };
12
13 int main()
14 {
15 C1 c1;
16 c1.m_A = 10; //错误,访问权限是私有
17
18 C2 c2;
19 c2.m_A = 10; //正确,访问权限是公共
20
21 system("pause");
22
23 return 0;
24 }
3.成员属性设置为私有
优点1:将所有成员属性设置为私有,可以自己控制读写权限
优点2:对于写权限,我们可以检测数据的有效性
示例代码:
1 #include 2 using namespace std;
3 class Person
4 {
5 public:
6
7 //姓名设置可读可写
8 void setName(string name)
9 {
10 m_Name = name;
11 }
12 string getName()
13 {
14 return m_Name;
15 }
16
17
18 //获取年龄
19 int getAge()
20 {
21 return m_Age;
22 }
23 //设置年龄
24 void setAge(int age)
25 {
26 if (age 0 || age > 150)
27 {
28 cout "你个老妖精!" endl;
29 return;
30 }
31 m_Age = age;
32 }
33
34 //情人设置为只写
35 void setLover(string lover)
36 {
37 m_Lover = lover;
38 }
39
40 private:
41 string m_Name; //可读可写 姓名
42
43 int m_Age; //只读 年龄
44
45 string m_Lover; //只写 情人
46 };
47
48
49 int main()
50 {
51
52 Person p;
53 //姓名设置
54 p.setName("张三");
55 cout "姓名: " endl;
56
57 //年龄设置
58 p.setAge(50);
59 cout "年龄: " endl;
60
61 //情人设置
62 p.setLover("小樱");
63 //cout //只写属性,不可以读取
64
65 system("pause");
66
67 return 0;
68 }
C++面向对象基础--类的封装
标签:读写权限 out ted 代码 示例 生活 私有 oid private
原文地址:https://www.cnblogs.com/guanrongda-KaguraSakura/p/13338002.html