C++基础细节

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;

原文地址:https://www.cnblogs.com/runninglzw/p/4445548.html