C到C++学习感悟---对比学习

C和C++本质区别?优势?缺陷?

区别:C语言是面向过程的一种编程语言,而C++是面向对象的一种编程语言

何为面向过程?

面向过程就是分析并解决问题,并将解决问题的步骤一步一步的实现,使用时依次调用就行。

何为面向对象?

封装、继承、多态
面向对象就是把问题分解成各个对象,建立对象的目的不是为了完成某一个步骤,而是为了描述某个事物在整个问题的步骤中的行为

C++优势及缺陷

面向过程的性能比面向对象高,因为类的调用需要实例化,开销比较大,比较耗资源。
但是面向过程没有面向对象那样易于维护,以及易复用,易扩展。由于面向对象有封装、继承、多态等性质,可以设计出低耦合的系统。

C到C++的过渡

1、C++中的const为真正的const, C语言中的const依然可以使用非const指针去改变值,体现出C++的严谨性。

2、C语言 char *p = malloc(100); 可以编译通过,C++不能,C++必须是char *p = (char *)malloc(100);

3、C++枚举为真正的枚举。C语言中的枚举变量其实就是int,可以任意赋值,而C++的枚举变量只能赋枚举值。

4、C语言中表达式不能作为左值,而C++某些表达式可以。(a = b) = 100; (a>b?a:b) = 100;

5、cout 实际上是一个类对象,cout 作用,等效于C语言中的prinf(),都是向屏幕上打印信息。endl为换行符,等效于\n

6、<< 为流运算符, 以前<<是位左移的意思,同一个运算符可以表达不同的意思,具体意思由语境决定。普通语言中叫一词多义。编程语言中叫“重载”,C语言中其实也有重载:以&为例, int *p = &a; int a,b; a = a&b; 但是C语言的重载是默认固定好的,不对开发者放开。但是C++的重载是对开发者开放的,可以定义自己的重载符号。

7、cin 的作用等效于C语言中的scanf,由键盘设备向其输入信息

8、C语言的prinf中有着强大的格式控制,比如%d,%c,%s, %u, %x %f等等。C++的cout也可以实现,略复杂。

9、C语言没有命名空间的概念,C++中的命名空间,其实就是对全局作用域进行再一次的划分

10、用引用来代替指针传参,C++加入引用后,能用引用解决的问题,避免用指针解决。

11、C++增加 new/delete是关键字,效率高于 malloc 和 free

12、C++的函数形参可以有默认值(默认参数)。例如 void func(int a, char *p=“123”);

13、C++匹配调用,可以隐式转换,int到long、double,double到int、float

你可能感兴趣的:(C到C++学习感悟---对比学习)