【C++学习记录2】C到C++的升级

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

C++在C的基础上提供了更多的语法和特性;

C++的设计目标是运行效率和开发效率(比C语言还高)的统一。

(C++中++的体现)C++是C语言的进化和升级。最重要的是两个方面,其一是类型的加强(类型检查更严格),其二是天生面向对象的支持(内置天生支持面向对象软件开发方法学)。

C++语言更强调语言的实用性:

所有的变量都可以在需要使用时定义(C语言规定,变量必须在作用域的开始处定义)(像C语言中,while1()break的使用小技巧一样)

register关键字请求编译器将局部变量存储于寄存器中。

在C++中依然支持register关键字,但C++编译器有自己的优化方式:

1)C语言中无法获取register变量的地址;

2)C++中可以去取得register变量的地址。

C++编译器发现程序中需要取register变量的地址时,register对变量的声明变的无效。

(早期C语言编译器不会对代码进行优化,因此register变量是一个很好的补充。)

在C++中,不允许定义多个同名的全局变量。

(在C语言中,重复定义多个同名的全局变量是合法的。多个同名的全局变量最终会被链接到全局数据区的同一个地址空间上。)

struct关键字的加强:

1)C语言中struct定义了一组变量的集合;

2)C语言中struct定义的标识符并不是一种全新的类型;

3)C++中的struct用于定义一个全新的类型。

问题:int f()与int f(void)有区别么?如果有区别是什么?

答:要看用什么编译器,C语言的还是C++的。

C++中所有的标识符都必须显示的声明类型(C语言中的默认类型在C++中是不合法的)。

如上图所示,f()是个函数定义么,如果是的话,函数类型是什么?g()可以接受多少个参数呢?

在C语言里面定义函数时没有给出参数或返回值的类型,默认为int。

C++中函数必须有返回值。

 

小结:

C++更强调实用性,可以在任意的地方声明变量(局部变量的定义)和struct新类型的使用;

C++中的register只是一个兼容的作用;

C++编译器能够更好的进行优化;

C++中的任意标识符都必须显示的指明类型。

猜你喜欢

转载自blog.csdn.net/haibing_x/article/details/84535626
今日推荐