C++与C语言的区别——C++是对C语言的扩展(一)

来源:互联网 发布:女生半袖图片淘宝 编辑:程序博客网 时间:2024/05/17 05:15

C++是最难的一门语言之一,这话绝对不是危言耸听!C++真的太难了。从本科大一的时候,就开始接触C和C++,也学了四、五年了,但是对C++的了解还是太肤浅,趁着研一的暑假(呵呵,哪里来的暑假?!大车埋土大学还真是个坑,不过没关系啦,只要胆子大,天天都放假!)~~言归正传,我想从头学习一下C++,提高自己的编程水平。给大家力荐一个网课(大家可以去腾讯课堂上面去搜),王桂林老师的——华为工程师 带你实战C++,确实非常棒!王老师讲课很有趣,很幽默,调理很清晰,逻辑很缜密。跟着老师实战,你绝对能学到好多知识。

这一部分内容,我参考王桂林老师的课程、C++Primer以及自己的思考。如下:

C++是带类的C语言,这个“++”主要包含三部分内容:对C语言进行语法上的扩展、面向对象(封装、继承和多态),STL(即模板)。

1、C++对C语言进行了类型增强

1)类型检查更严格

比如这样的代码:

#include <iostream>using namespace std;int main(){const int a = 100;a = 50;cout << a << endl;}


这段代码无论是在C中还是C++中,编译都通过不了。原因是:const 类型的值是不可以修改的.

但是呢,如下代码:

        #include <iostream>using namespace std;int main(){const int a = 100;int *p = &a;*p = 50;cout << a << endl;}

把一个const类型指针赋值给非const类型指针,此例中,强行把const int *  赋值给int*,C语言是可以编译通过的(当然了,C语言不用cout),很明显,明修栈道暗度陈仓。但是,C++编译不通过。显然,C++做了数据类型增强,安全性更高。

相关说明:

1)congst 修饰谁的问题。const修饰谁,只需要把类型去掉即可。比如,const int a 与int const a 是一模一样的。此时,只需要把类型int 去掉,a是一样的。

再比如  int *const p,再把类型拿掉,const 修饰的是p ,p就不能改变了,但是p指向的内容是可以改变的.

如果是const int *const p,p不能改变,p指向的内容也不能改变。

2)在C语言中,const int a ;是可以编译通过的,a = 10;报错.原因:一旦在初始化的时候不赋值,以后就不能再赋值了。但是,在C++中,const int a ;编译不通过。因为在C++中,必须在定义的时候就给初始化。

第二个例子:如下代码

#include <iostream>#include <stdio.h>using namespace std;int main(){char *p = malloc(100); }

在C语言中,是可以通过的。但是在C++中,将void *赋值给char *,是不可以的,需要这样修改:

char *p =(char *) malloc(100);

2)C++增加了布尔类型

C语言中是没有布尔类型的,它表示真假的时候,用0和非0(注意,不仅仅是1)

C++中,bool类型有true和false,占一个字节。但是呢,给bool 赋其它数值,也是可以的。

其实,布尔类型的实现方式就是枚举。
3)真正的枚举

在C语言中,设计非常灵活。

enum Day {Mon,Tue,Wen};int main(){//enum Day today = Mon;enum Day today = 100;//在C语言中合法。C++不允许return 0;}

给枚举变量赋值,也可以赋数值。但是,在C++中是不允许的。

补充说明:

1)枚举和宏很相似。所以,在C++中,能用枚举,就用枚举不用宏。或者说,不用宏,能用const代替的就用const  !!

4)表达式的值可以被赋值(表达式的值是左值)

int main(){int a, b = 10;a = b = 100;}

上述程序中,10 赋给b ,b=10这个表达式的值赋值给a,没问题,a= 10,b = 10。

但是,如果程序是这样的呢:

int main(){int a, b = 10;(a = b) = 100;//C语言中,这句话是错的,因为表达式不可以被赋值cout << a << endl << b << endl;}

此时,a =100,b = 10。是不是和你想的不一样呢?其实上述程序可以理解为两句代码:

a = b;a = 100;//()的优先级比 = 高

原创粉丝点击