1.灵活的局部变量说明
C语言中局部变量的说明必须在可执行语句之前,否则编译无法通过,而C++中允许声明变量与可执行语句在程序中交替出现。
例如:
int i;
i=10;
int j;
j=20;
上面代码在C中编译不通过,而C++可以正常执行。
2.const修饰符
C语言使用#define来定义常量,例如:#define limit 100
C++中使用const 来定义常量,例如;const int limit=100
C++中const也可以和指针一起使用,他们分为以下3中情况:
(1)指向常量的指针
const char* name=”chen”
指针地址可以修改:name=”liu”(表示指针指向“liu”所在的地址)
指针指向地址的值不可修改,因为本身就是常量,不可修改,编译会错误:name[1]=’c’
(2)常指针
Char* const name=”chen”;
指针地址不可以修改,编译错误
指针指向的值可以修改,但是修改之后运行会报错,这是为什么?
(3)指向常量的常指针
上面所说的两个都不可以修改
3.带有默认参数的函数
函数声明必须给出默认值,如:int spe(int x=3,float y=2);
函数定义不必给出默认值了,否则会给出“重复指定默认值的报错信息”
注意:如果有非默认参数时,默认参数必须在最后,例如:int fun(int x,int y,int z=5);
4.函数的重载
当两个或两个以上函数公用一个函数名,并且函数参数类型不同或者函数参数个数不同时,叫做函数重载。
不允许重载的特殊情况:
(1)当只有函数返回值不同时候不可以重载
例如:int mul(int x)和double mul(int x)
(2)和带默认参数值的函数一起使用会产生二义性
例如:int fun(int x=2,int y=3);和int fun(int x);
调用fun(3)会产生二义性
4.::作用域运算符
如果两个同名变量,一个是全局的,一个是局部的,局部变量会在其作用域内屏蔽全局变量,如果需要在局部变量的作用域内使用全局变量,需要加在变量前叫::运算符。
5.强制类型转换
在C中:int i=10;double j=(double)i;
而C++既支持C中的,又添加了自己的格式:int x=10;double y=double(x);
6.引用
引用相当于一个变量的别名,对别名的操作都是对源变量的操作。
不可以声明引用的数组(int &a[10])和引用的引用(int &&p),引用的指针(int &*p),但可以将引用的地址赋给指针(int &x=a;int *p=&x)
说明:
(1).引用在被创建以后必须立即对它进行初始化。
(2).为引用提供初始值,可以是一个变量或者一个引用。
(3).指针间接访问某个变量,而引用通过别名直接访问某个变量(以前博客写过)
(4).引用初始化后不可以在重新声明为另一个变量的引用。例:int j,k; int &x=j;x=&k是错误的
(5).引用作为函数参数可以修改传入实参的值
(6).引用作为函数返回值可以将函数调用放在赋值运算的左边。
例:
int &fun(int x);
fun(5)=100;