c++对c的主要扩展内容1

来源:互联网 发布:端口检测失败 编辑:程序博客网 时间:2024/06/05 21:06

1.namespace命名空间:指定了标识符的可见范围,标准库的标识符使用using namespace std;

2.register关键字加强,将变量放入寄存器内进行优化,c不能获取地址,c++可以,另外c++编译器针对某些情景有特定的优化方式,即不使用register,也有可能进行register优化

3.struct关键字:c中的struct是变量的集合,但在c++中认为是一种新类型

4.c++所有变量和函数必须有类型:比如c中:int func();表示返回值为int,可接受任意类型参数的函数;而c++则认为是返回为int的无参数的函数

5.Bool类型的加入

6.三目运算符加强:比如:

void main()

{

int a=10;

int b=20;

(a<b?a:b)=30;

cout<<a<<b<<endl;

}

这里会发现c返回的是变量的值,不能做左值,而c++则是返回了这个变量本身;可以认为c++编译器帮助我们取了地址,来让我们使用这个内存;

7.const关键字:针对const需要区分:const char *p和char* const p和const char* const p 区别:第一个表示p所指的内存空间不能被修改,第二个代表p这个变量不能被修改,即指向特定的内存空间,但是内存空间的值可以修改,第三个就是都不能被修改;

看c和c++的表现:

void main()

{

const int a=10;

int *p=&a;

*p=20;

printf("a:%d",a);

}

C语言中const变量是只读变量,有自己的存储空间

C++中的const常量:当碰见常量声明时,在符号表中放入常量,

编译过程中若发现使用常量则直接以符号表中的值替换  

当const常量为全局,并且需要在其它文件中使用

当使用&操作符取const常量的地址,则给对应的常量分配存储空间

C++编译器虽然可能为const常量分配空间,但不会使用其存储空间中的值。



原创粉丝点击