首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C+编程学习中的重点难点总结——类和对象

C语言是面向过程的,而C++是面向对象的

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

本周类与对象的内容算是真是学完,接下来则是运用与理解。

重要内容有

面向对象的三大特点:

封装、继承、多态

类的三种访问限定符:

1. public(公有的)

2. private(私有的)

3. protected(受保护的)

特点:

1. public成员可从类外部直接访问,private/protected成员不能从类外部直接访问。

2. 每个限定符在类体中可使⽤多次,它的作⽤域是从该限定符出现开始到下⼀个限定符之前或类体结束前。

3. 类体中如果没有定义限定符,则默认为私有的,而struct如果没有定义限定符,则默认为公有的

4. 类的访问限定符体现了⾯向对象的封装性

类的六个默认成员函数:

1. 构造函数

2. 拷贝构造函数

3. 赋值操作符重载

4. 析构函数

5. 取地址操作符重载

6. const修饰的取地址操作符重载

重要知识点:成员函数有两个作用:一是操作数据成员,包括访问和修改数据成员;二是用于协同不同的对象操作,称为传递消息。成员函数重点对类中数据成员操作,简单的成员函数实现可以在类中定义,此时,编译器作为内联函数处理。函数重载:函数名相同,但参数不同(类型不同,或者个数不同)的一组函数。定义对象可以带参数,对象不要在主函数以外。构造函数可以有任意类型的参数,但不能有返回类型,当定义了构造函数时,按照数据成员在类中的声明顺序进行初始化。析构函数名是在类名之前冠以一个波浪号“~”。析构函数没有参数,也没有返回值。在定义了带参数的构造函数以后,不带参数的无效,构造函数一般定义两个以上。组合对象初始化法:先初始化被包含的对象成员,再初始化本身成员。

关于怎么快速学C/C++游戏编程,有什么方法,这个问题,想必大家都已经心中有数了,打算深入了解这个行业的朋友,可以加下小编的C/C++游戏编程学习群:627+012+464,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2018最新的C/C++资料和0基础入门教程,欢迎初学和进阶中的小伙伴。

每天晚上20:00我都会开直播给大家分享C/C++游戏编程学习知识和路线方法,群里会不定期更新最新的教程和学习方法(进群送2018C/C++游戏编程学习教程),大家都是学习C/C++的,或是转行,或是大学生,还有工作中想提升自己能力的前端党,如果你是正在学习C/C++的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实,非常适合新手学习,有不懂的问题可以随时问我,工作不忙的时候希望可以给大家解惑。

例题:学生查询系统(不完整版):

[cpp]view plain copy

1. #include

2. #include

3. #include

4.usingnamespacestd;

5.classstudent

6. {

7. string name;

8.intno;

9.intscore[3];

10.floataverage;

11.intorder;

12.public:

13. student(intid,string na,intx,inty,intz):name(na),no(id)

14. {

15. score[0]=x,score[1]=y,score[2]=z;

16. order=-1,average=(score[0]+score[1]+score[2])/3;

17. }

18. student()

19. {

20. score[0]=score[1]=score[2]=0;

21. order=-1,average=0;

22. }

23.intgetNo(){returnno;}

24.floatgetAverage(){returnaverage;};

25.voidsetAverage(intavg)

26.voidsetOrder(intx)

27.intgetOrder(){returnaverage;};

28. string getName(){returnname;}

29.voidsetName(string name){this->name=name;}

30.voiddisplay();

31. };

32.voidstudent::display()

33. {

34. cout

35. }

36.boolcmp1(student stu1,student stu2)

37. {

38.if(stu1.getAverage()-stu2.getAverage()>=1e-9)return1;

39.elsereturn0;

40. }

41.boolcmp2(student stu1,student stu2)

42. {

43.returnstu1.getNo()

44. }

45.classstudent_list

46. {

47. student list[60];

48.intn;

49.public:

50. student_list():n(0){};

51.voidadd();

52.voiddeleteStu();

53.voidquery();

54.voidchange();

55.voiddisplay(intflag);//flag=1,成绩按学号排列。flag=0,成绩按名次排列

56.voidmenu();

57.intsearch(intno);//按学号查找。找到返回在成绩表中的位置,否则返回-1

58.voidsortList();

59. };

60. //该函数的功能是添加一个或者多个同学基本信息。

61.voidstudent_list::add()

62. {

63.intno,x,y,z;

64. string name;

65. system("cls");

66. cout

67.while((cin>>no)&&no!=-1)

68. {

69. cin>>name>>x>>y>>z;

70. student s(no,name,x,y,z);

71. list[n++]=s;

72. sortList();

73. }

74. }

75. //该函数的功能是对改变了的成绩表进行名次更新。结果可以按名次排列也可按学号排列

76.voidstudent_list::sortList()

77. {

78. sort(list,list+n,cmp1);

79.inti;

80.for(i=0;i

81. list[i].setOrder(i+1);

82. }

83.voidstudent_list::display(intflag)//flag=1,按学号排列; flag=0,按名次排列

84. {

85.if(flag) sort(list,list+n,cmp2);

86.elsesort(list,list+n,cmp1);

87. cout

88.for(inti=0;i

89. list[i].display();

90. }

91.intstudent_list::search(intno)

92. {

93.inti;

94.for(inti=0;i

95.if(list[i].getNo()==no)returni;

96.return-1;

97. }

98.voidstudent_list::query()

99. {

100.intno,i;

101. system("cls");

102. cout

103.while(cin>>no&&no!=-1)

104. {

105. i=search(no);

106.if(i!=-1)

107. {

108. cout

109. list[i].display();

110. cout

111. }

112.elsecout

113. }

114.

115. }

116. //该函数的功能是实现按学号进行修改操作,并输出查找的结果

117.voidstudent_list::change()

118. {

119.intno,i,x,y,z;

120. string name;

121. system("cls");

122. cout

123.while(cin>>no&&no!=-1)

124. {

125. i=search(no);

126.if(i!=-1)

127. {

128. cout

129. cin>>name>>x>>y>>z;

130. student s(no,name,x,y,z);

131. list[i]=s;

132. sortList();

133. cout

134. }

135.elsecout

136. }

137. }

138.voidstudent_list::deleteStu()

139. {

140.intno,i;

141. system("cls");

142. cout

143.while(cin>>no&&no!=-1)

144. {

145. i=search(no);

146.if(i!=-1)

147. {

148.for(inta=i;a

149. {

150. list[a]=list[a+1];

151. }

152. sortList();

153. cout

154. }

155.elsecout

156. }

157. }

158.intmain()

159. {

160.inta;

161. student s(1,"ff",66,77,88);

162. s.display();

163. cout

164. s.setName("方法");

165. s.display();

166. student_list c;

167. cout

168. c.add();

169. cout

170.while(cin>>a&&a!=-1)

171. {

172.if(a=2) c.change();

173.if(a=1) c.query();

174.if(a=3) c.deleteStu();

175.if(a=4) c.display(1);

176.elsecout

177. }

178.return0;

179. }

[cpp]view plain copy

1.

本章学习心得:类与对象是c++的重点,它不易理解与运用,需要注意的细节有很多,知识点也繁多且对于我这样的初学者来说使用时不怎么方便。在编写类与对象的程序时可用“滚雪球法”,先定义一个类,再将这个类调通,增加一个功能调通一个功能,这样可以减少错误,也使编写时更具逻辑性,出现错误也可容易找出与解决。在编写程序时要有良好的条理性,明白这一行需要编写什么,怎样在之后的程序中合理使用,在做完一个项目时,我们需要不断的完善它,找出其中的不足与繁杂部分,将它优化让程序更好的运行。学完类与对象也就差不多将c++的核心部分学习完了,这部分内容需要细心研究也需要多加练习。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180421A1IGSP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券