标签:P99 封装 ... C++ 访问 105 权限 class 属性
- P99. 类和对象——封装——属性和行为作为整体
- P101. 类和对象——封装——访问权限
- P102. ...——...——C++中 class 和 struct 的区别
- P103. ...——...——成员属性私有化
- (P99)
C++面向对象的三大特性为:封装、继承、多态
C++认为万事万物都皆为对象,对象有其属性和行为
例如:
人可以作为对象,属性有姓名、年龄、身高、体重...,行为有走、跑、跳、吃饭、唱歌...
车也可以作为对象,属性有轮胎、方向盘、车灯...,行为有载人、放音乐、放空调...
具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类
- 封装
封装是C++面向对象三大特性之一
封装的意义
- 将属性和行为作为一个整体,表现生活中的事物
- 将属性和行为加以权限控制
封装意义一:
在设计类的时候,属性和行为写在一起,表现事物
类的语法:class 类名 { 访问权限: 属性 / 行为 };
一个示例
1 //设计一个圆类,求圆的周长 2 const double pi = 3.14; 3 4 class circle 5 { 6 //访问权限 7 public: 8 //属性 9 double radius; //半径 10 //行为 11 //求圆的周长 12 double cal_ccf() 13 { 14 return 2 * pi*radius; 15 } 16 }; 17 18 int main() 19 { 20 //通过圆类 创建一个具体的圆(对象) 21 //实例化(通过 类 创建 对象 的过程) 22 circle c1; 23 c1.radius = 5; //半径=5 24 cout << "圆c1的周长为 " << c1.cal_ccf() << endl; 25 26 system("pause"); 27 return 0; 28 }
- (P101)
封装意义二:
类在设计时,可以把属性和行为放在不同的权限下,加以控制
访问权限有三种:
1. public 公共权限 //成员 类内可访问,类外也可以访问
2. protected 保护权限 //成员 类内可访问,类外不可访问(子类可以访问父类中的保护内容)
3. private 私有权限 //成员 类内可访问,类外不可访问(子类不可以访问父类中的私有内容)
- (P102)struct 和 class 的区别
在C++中 struct 和 class 唯一的区别就在于 默认的访问权限不同
区别:
- struct 默认权限为公共
- class 默认权限为私有
- (P103)成员属性设置为私有
优点1:将所有成员属性设置为私有,可以自己控制读写权限
优点2:对于写权限,我们可以检测数据的有效性
一个示例
1 class person 2 { 3 public: 4 //写姓名 5 void setname(string n) 6 { 7 name = n; 8 } 9 //读姓名 10 void getname() 11 { 12 cout << "姓名: " << name << endl; 13 } 14 //写年龄(并检测数据的有效性) 15 void setage(int a) 16 { 17 if (a < 0 || a>150) 18 { 19 cout << "年龄设置错误!" << endl; 20 return; 21 } 22 age = a; 23 } 24 //读年龄 25 void getage() 26 { 27 cout << "年龄: " << age << endl; 28 } 29 //写情人 30 void setlover(string l) 31 { 32 lover = l; 33 } 34 private: 35 string name; //姓名 可读可写 36 int age = 0; //年龄 可读可写 37 string lover; //情人 只写 38 }; 39 40 int main() 41 { 42 person p1; 43 p1.setname("wjj"); 44 p1.getname(); 45 p1.setage(160); 46 p1.setage(24); 47 p1.getage(); 48 p1.setlover("aaa"); 49 50 system("pause"); 51 return 0; 52 }
运行结果
标签:P99,封装,...,C++,访问,105,权限,class,属性 来源: https://www.cnblogs.com/wjjgame/p/16389511.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。