C++小白到大白养成记-C到C++的升级

--事物的难度远远低于对事物的恐惧! 

    从上一节我们知道,C++与C语言并不存在什么竞争关系,C++可以说是进化版的C语言,兼容C语言的特性,同时又具有C语言所不具备的高级特性。

    -C++继承了所有C的特性

    -C++在C的基础上提供了更多、更灵活的语法和特性
    -C++的设计目标时运行效率与开发效率的统一

1、C++更强调语言的实用性,所有的变量都可以在使用时才定义,而C语言必须先定义后实用,看看下边的代码,for语句中的条件变量i,我们是在使用时定义,这在C++中是允许的;而在C语言中,所有的变量必须在作用域的开始位置定义,不能在任意的地方定义

    for(int i=0; i<5; i++)
    {
        //your code...
    }
2、在C进阶剖析我们知道,register关键字请求编译器讲局部变量存储于寄存器中
    -在C++中依然支持register关键字

    -C++有自己的优化方式,可以取到register变量的地址,而在C语言中是不能取register变量的地址的。然而虽然C++中支持register关键字,但是基本是形同虚设,仅仅是为了兼容C语言而已,现代的C++工程中,基本看不到register关键字。

3、在C语言中,重复定义多个同名的全局变量时合法的(这多个同名的全局变量最终会被链接到全局数据区的同一个地址空间);而在C++中,不允许定义多个同名的全局变量,直接拒绝这种二义性的做法。

4、struct关键字的加强
    -C语言中的struct仅仅是定义了一组变量的集合,struct定义的标识符并不是一种新的类型

    -C++中的struct用于定义一个全新的类型


5、C++中所有的标识符都必须显示的声明类型,C语言中的默认类型在C++中是不合法的,来看看下边的一个问题:


对于上边的问题,在C语言与C++语言中是不一样的,
C语言中:
    -int f() 表示返回值为int,接受任意参数的函数

    -int f(void)表示返回值为int的无参函数

C++语言中:
    -int f()与int f(void)都表示返回值为int的无参函数

    -C++中不允许使用默认类型的返回值或函数参数

总结:

    -C++可以在任意地方声明变量
    -C++中的register关键字只是一个兼容作用,没什么实际用处。
    -C++中的任意标识符都必须显示的指明类型

猜你喜欢

转载自blog.csdn.net/lms1008611/article/details/80551337