1.概述
C++以C语言为基础,继承了C的所有语法,有面向对象支持。
2.加强点
加强点 | C++ | C |
实用性加强 | C++更强调语言的实用性,所有变量都可以使用时再定义。 | 只能在作用域开始的时候定义 |
register加强 | register关键字请求编译器将局部变量存储于寄存器中,C++可以取得register变量的地址。C++编译器发现程序需要取register变量地址时,register对变量的声明变得无效。 | 无法取得regist变量的地址。早期C语言编译器不会对代码进行优化,因此设计register变量是一个很好的补充。 |
变量增强 | C++不允许定义多个同名的全局变量 | 重复定义多个全局变量是合法的,但是定义的多个同名的全局变量最终会被链接到全局数据区的同一个地址空间上。 |
struct关键字加强 | C++中的struct用于定义一个全新的类型 | C语言中,struct定义了一组变量的集合,struct定义的标识符并不是一种新的类型,故作为一个类型要用时,需通过typedef来定义。 |
类型加强 | C++中所有标识符都必须显式声明类型。C语言的默认类型在C++中是不合法的。比如C++中int f()与int f(void)具有相同的意义,都表示返回值为int的无参函数。 | 存在默认类型的情况,即C语言中,如果函数声明时没有写返回类型,则默认返回int型,但是建议显式声明函数返回类型,就算返回类型为int型,也明确写出。例:C语言中,int f() 表示返回值为int,接受任意参数的函数。f(void)表示返回值为int的无参函数。 |
函数参数增强 | C++可以在函数声明时为参数提供一个默认值,当函数调用是没有提供参数的值,则使用默认值。 |
3.部分加强点概述
1)函数参数增强
// 函数的默认值必须在函数声明中指定,函数定义时候不用再提供默认值
// 若在函数定义时候也指定默认值,且与声明中的指定值不同的情况下
// 函数声明
int mul(int x = 0);
// 函数定义
int mul(int x){
return x*x;
}