对于C++语言多态性的认识
小标 2018-07-25 来源 : 阅读 1348 评论 0

摘要:本文主要向大家介绍了对于C++语言多态性的认识,通过具体的内容向大家展示,希望对大家学习C++语言有所帮助。

本文主要向大家介绍了对于C++语言多态性的认识,通过具体的内容向大家展示,希望对大家学习C++语言有所帮助。

1.说在前面:

项目大体上解决了,现在可以腾出时间来优化项目和学习新的知识

2.C++多态性

1.简述:(多态)polymorphism

       对于C++的多态性,这是一项很灵活的技术,用法十分灵巧,有难度;简单来说:多态性就是适当的使用接口函数,通过一个接口来使用多种方法,(相当于上级说一个命令,A,B,C,D等人都做出反应,一个命令,多个反应;

2.怎样实现多态性

1.采用虚函数和指针来实现多态性

通过虚函数来定义要实现的方法,通过基类的指针指向不同的子类的虚函数方法

2.多态性的优点是实现接口的重用

3.虚函数:

1.虚函数采用关键字virtual修饰,虚函数允许子类重新去定义成员函数;

2.重写(函数名一致,但是内容不一致)//又称覆盖(override)

3.重载(函数名一致,但是参数表列不一致)

4.多态性一般就是通过对虚函数进行重写,然后用基类指针指向不同的子对象,调用不同的虚函数

4.代码实现

[cpp] view plain copy

 

1. #include<iostream>  

2. #include<stdlib.h>  

3. #include<string>  

4. using namespace std;  

5. class Ishape  

6. {  

7. public:  

8.     //多态性实现需要虚方法  

9.     virtual double get_Area() = 0;  

10.     virtual string get_Name() = 0;  

11. };  

12. //定义类1 CCircle  

13. class CCircle :public Ishape  

14. {  

15.     //声明的时候需要带上Virtual关键字 显示多态性  

16. public:  

17.     CCircle(double radius) {this->c_radius = radius;}  

18.     CCircle(){}  

19.     virtual double get_Area();  

20.     virtual string get_Name();  

21. private:  

22.     double c_radius;//定义圆的半径  

23.   

24. };  

25. //定义方法  

26.   

27. double CCircle::get_Area()  

28. {  

29.     return 3.14*c_radius*c_radius;  

30. }  

31. string CCircle::get_Name()  

32. {  

33.     return "CCircle";  

34. }  

35. class CRect :public Ishape  

36. {  

37. public:  

38.     CRect(double length, double width) { this->m_length = length, this->m_width = width;}  

39.     CRect(){};  

40.     virtual double get_Area();  

41.     virtual string get_Name();  

42. private:  

43.     double m_length;  

44.     double m_width;  

45. };  

46. double CRect::get_Area()  

47. {  

48.     return m_length*m_width;  

49. }  

50. string CRect::get_Name()  

51. {  

52.     return  "Rectangle";  

53. }  

54.   

55. //通过指针指向不同的类从而使用不同的方法  

56. #include"text.h"  

57.   

58.   

59. void main()  

60. {  

61. <span style="white-space:pre;"> </span>Ishape *point = NULL;//建立指针  

62. <span style="white-space:pre;"> </span>point = new CCircle(10);  

63. <span style="white-space:pre;"> </span>//圆类  

64.   

65.   

66. <span style="white-space:pre;"> </span>cout << point->get_Name() << "的面积是:" << point->get_Area() << endl;  

67. <span style="white-space:pre;"> </span>delete point;  

68. <span style="white-space:pre;"> </span>//矩形类  

69. <span style="white-space:pre;"> </span>point = new CRect(10, 20);  

70. <span style="white-space:pre;"> </span>cout << point->get_Name() << "的面积是:" << point->get_Area() << endl;  

71. <span style="white-space:pre;"> </span>delete point;  

72. <span style="white-space:pre;"> </span>system("pause");  

73. }  

74.   

75.   

76.   

77.   

78.   

79.   

80.   

81.   

82. <span style="white-space:pre;"> </span>  

83.   

84.   

85.   

86.   

87. <span style="white-space:pre;"> </span>  

88.   

89.   

90. <span style="white-space:pre;"> </span>  

91. <span style="white-space:pre;"> </span>  

92. 

本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 2 不喜欢 | 0
看完这篇文章有何感觉?已经有2人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程