C++:C与C++的区别 (附:C++知识点超详解思维导图)

C++

    • C++初阶阶段性总结
    • C++进阶阶段性总结
    • C++的三大特性:封装、继承和多态
    • C语言和C++的区别与联系


这段时间针对 C++ 的学习到了一个收尾的阶段。目前所涉及到了 C++ 基础语法、大小知识点的学习。当然语言学习绝对离不开实战项目的练手,网络优质资源以及各类经典丛书也是 C++ 学习的巨大宝库。在此以思维导图的形式进行阶段性总结。

C++初阶阶段性总结

C++进阶阶段性总结

C++:C与C++的区别 (附:C++知识点超详解思维导图)_第1张图片

C++的三大特性:封装、继承和多态

  • 封装

所谓封装就是将某些东西包装盒隐藏起来,让外界无法直接使用,只能通过某些特定的方式才能访问。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是通过外部接口以及特定的访问权限(private、public、protected)来使用类的成员。

  • 多态

多态可以使我们以相同的方式处理不同类型的对象,我们可以使用一段代码处理不同类型的对象,只要他们继承/实现了相同的类型。这样我们没有必要为每一种类型的对象编写相同的逻辑,极大的提高了代码的重用。其实,用简单的一句话来形容就是:多态性,允许将子类类型的指针赋值给父类类型的指针,多态性在C++中是通过虚函数实现的。虚函数就是允许被其子类重新定义的成员函数。而子类重新定义父类虚函数的做法,称为“覆盖”,或者称为“重写”。子类重写父类中虚函数时,即使不用virtual声明,该重载函数也是虚函数。

  • 继承

继承是面向对象的一个重要概念,如果一个类B继承自另一个类A,就把这个类B称为“A的子类”,而把A称为“B的父类”。继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码,在令子类继承父类的同时,可以重新定义某些属性,并重新某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。

C语言和C++的区别与联系

在学习了C语言和C++之后,这两者之间的区别我们需要仔细的捋一捋!

一、面向过程语言和面向对象语言

我们都知道C语言是面向过程语言,而C++是面向对象语言,说C和C++的区别,也就是在比较面向过程和面向对象的区别。

  1. 面向过程和面向对象的区别

(1)面向过程:面向过程编程就是分析出解决问题的步骤,然后把这些步骤一步一步的实现,使用的时候一个一个的依次调用就可以了。
(2)面向对象:面向对象编程就是把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了通过对象之间的交互将事情完成(描述某个事物在整个解决问题的步骤中的行为)

举个例子:(玩五子棋) 
(1)用面向过程的思想来考虑就是:开始游戏,白子先走,绘制画面,判断输赢,轮到黑子,绘制画面,判断输赢,
	重复前面的过程,输出最终结果。 

(2)用面向对象的思想来考虑就是:黑白双方(两者的行为是一样的)、棋盘系统(负责绘制画面)、
	规定系统(规定输赢、犯规等)、输出系统(输出赢家)。 
	面向对象就是高度实物抽象化(功能划分)、面向过程就是自顶向下的编程(步骤划分)

  1. 面向过程和面向对象的优缺点

在学习一些比较抽象的概念时,由于我们的理解能力很有限,有时候一些比较恰当的例子也是有助于我们学习的,因此对二者的优缺点比较,还是先举例子,后总结吧!

(1)用面向过程写出来的程序就像一份蛋炒饭,也就是米饭和炒的菜均匀的混合在了一起,因此蛋炒饭入味均匀。
	不会像盖浇饭那样,可能有时候吃的菜多饭少,还有时候菜少饭多。但是如果你不喜欢吃蛋炒饭,只想吃肉炒饭,
	那么原来做的这份蛋炒饭就得倒掉了,重新做一份肉炒饭,厨师就得辛苦了!

(2)用面向对象写出来的程序就像一份盖浇饭,也就是米饭和盖菜分别做好,将盖菜放在米饭上面。
	盖浇饭虽然没有蛋炒饭那样入味均匀,但是如果给了你一份土豆丝盖饭,你又不想吃了,换成牛肉盖饭。
	厨师只需要将米饭上面的土豆丝倒掉,重新做一份牛肉放在上面就好了。

基于上述的例子,二者的优劣总结如下:

面向过程语言

  • 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。

  • 缺点:没有面向对象易维护、易复用、易扩展

面向对象语言:

  • 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
  • 缺点:性能比面向过程低

具体语言的区别:

这个方面就参考之前的博客吧~~


如有不同见解,欢迎留言讨论~~

你可能感兴趣的:(C++专栏)