第一堂课,从C语言到C++

C++是C语言的超集,绝大部分C语言程序用C++编译器编译是没问题的。

而C和C++的区别在于C是面向过程的语言,C++是面向对象的语言。

C++顾名思义就是C plus plus,是在C语言的基础上的加强,这其中就有很多C语言所没有的内容了:

1.命名空间(namespace)是C++中为了解决在中大型软件编程中多个程序员编程过程中出现的命名重复问题,让每一位程序员使用不同的命名空间,这样即使重名了也可以用过命名空间来区别。

2.输入输出流(iostream)也是C语言中所没有的,最基础的差别就是使用cin 和 cout来代替scanf 和 printf,在格式上简单很多。

3.实用性加强,C语言中的变量都必须在作用域开始的位置定义,而C++中所有的变量在使用之前定义好就行,更强调实用性。

4.register关键字的变化,C语言中用register 关键字定义的变量是存于寄存器的,是无法提取其地址的,但在C++中若需要提取register声明的变量地址时,register声明将变得无效。

5.变量检测加强,C语言中重复定义全局变量是合法的,同名的全局变量会链接到同一数据段,而在C++中重复定义全局变量是非法的,编译不通过,这就是变量检测的加强。

6.struct类型的加强,C语言中 struct 定义了一组数据的集合,并不是新的数据类型,所以在定义变量的时候要加上struct来修饰,而C++中 struct 定义了一个新的数据类型,可以直接使用来定义变量。

7.C语言中 函数 func() 括号为空的话表示可以接受任意实参,而 func(void)表示无形参,不能传实参给该函数。C++中所有变量和函数都必须有类型,而且形参有无 void 修饰都一样。

8.C++新增 bool 类型关键字,用 bool 关键字定义的变量只有 0 和 1 两种状态, 0 代表false,1代表 true,无需再自己定义true和false。

9.三目运算符 ()?():()的加强,C语言中三目运算符返回的结果是其中变量的值,是常量,无法修改。C++中返回的是变量本身,可以修改。在C中可以用 *(a > b) ? &a : &b 来模拟C++的三目运算符

10.const 的不同之处,C语言中用const 修饰的变量是一个常变量,本身还是变量,有自己的地址,存于内存之中。C++中      const int a =1 ;   a就是常量,存于常量表中。C++中 const 和 define 类似,但二者作用域不同,const 只在该函数的作用域内有效,而 define 在整个作用域都是有效的。

11.C++中增加引用功能(int &a = b),对比于指针,引用就是给变量取了另一个名字,而这两个名字都表示同一个地址空间,都能访问该地址中的内容。引用在某些情况下可以代替指针的作用,而且引用相比于指针有更强的实用性。

12.内联函数,当出现函数调用时,要跳出当前函数,转到目的函数,这一过程要保留当前函数的参数,压入栈中,如果调用次数过多,且被调用函数十分简短, 那么跳转过程将耗费大量时间,而使用内联函数,将多次调用的函数直接链接在当前函数中,这样就省去调用的过程,从而节省时间。

13.函数的默认参数 int func (int a ,int b = 2),C++中函数的形参是可以赋给默认参数的, 当函数没有传递实参时(例如 func ( )),函数就使用该形参的默认参数。只有参数列表后面部分才能提供默认参数,一旦在一个函数调用中开始使用默认参数,那么这个参数后的所有参数都必须使用默认参数。

14.函数占位参数 int func (int a, int,int),当定义一个函数时,可以在参数列表是只写数据类型关键字,而不写参数名,这就是占位参数。

15.函数重载,C语言中函数名是不能重复的,而C++中是可以同名的,但是是由条件的,这就是函数重载。函数重载要至少满足以下三个条件中的一个:参数个数不同、参数类型不同、参数顺序不同。函数的返回值不同不能作为重载的判断标准。

猜你喜欢

转载自blog.csdn.net/qq_42717879/article/details/81112663