一、面向过程的语言与面向对象的语言
我们都知道C是面向过程的语言,而C++是面向对象的语言。那么,我们要怎么理解面向过程和面向对象呢,我们先举个例子,在大二的时候我在网上学习过用面向对象的方法来实现人机对战五子棋,我会把五子棋这个游戏分解为一个个类:黑白双方(两者的行为是一样的)、绘制棋盘、实现规则、判断胜负并输出。而如果用面向过程的思想来实现五子棋的话,就是开始游戏、黑子落子、判断胜负、白子落子、判断胜负、重复前面的行为最终输出结果。所以,面向过程就是将解决问题的步骤实现出来然后使用的时候依次调用即可。
二、面向过程与面向对象的优缺点
面向过程:
- 优点:性能比面向对象高,因为类调用时需要实例化,资源消耗大,因此单片机、嵌入式开发一般使用面向过程
- 缺点:耦合度较高,没有面向对象易维护、扩展、复用。
面向对象:
- 优点:面向对象具有继承,封装,多态的特性,因此耦合度低,易维护、扩展、复用
- 缺点:没有面向过程性能高。
三、常见的面试题
C和C++中struct的区别是什么?
(1)C语言的struct中不可以有函数成员而C++中可以
(2)C语言的struct中数据没有private、public、protected访问权限设定,而C++中有
(3)C语言的struct没有继承关系,而C++中有许多继承关系
为了和C语言兼容,C++引入了struct关键字,C语言中struct只是一些变量的结合体,并没有权限的设定,虽然也起到了一定的封装作用但并不能隐藏数据,因此C++在安全性上做到了优化。
拓展:C++中struct和class有什么区别?
(1)默认继承权限不同,class默认继承权限是private,而struct默认继承权限是public
(2)class可以定义模板参数(就像typename后续我会做一些关于模板类的笔记),而struct不可以。