实用性增强
C语言中变量必须被定义在作用域的开始位置
C++则更强调语言的实用性,所有的变量可以在需要时再进行定义
Register关键字
早期的C语言编译器不会对代码进行优化,因此register变量是一个很好的补充。C语言中register关键字意为将变量放入寄存器当中,而在C语言中,无法取得register的地址,即:
register int a = 0;
//此句报错
printf("&a = %x\n",&a);
而在C++中,对编译器做了优化,即使不使用register关键字,编译器可能会自动进行优化。如:
for(int i = 0;i<10000;++i){
cout<<i<<endl;
}
对于这种大量使用i的循环,c++编译器也会将其放到寄存器上以加快执行速度。
同时,C++中可以取得register变量的地址,但需要注意的是:当取register变量的地址时,register对变量的声明变得无效。
变量检测增强
在C语言中,重复定义多个同名的全局变量是合法的:
int g;
int g = 1;
多个同名的全局变量,最终会被链接到全局数据区的同一个地址空间上去。
而C++拒绝这种二义性的表达。