一、初始化
c++中的初始化方法有以下几种:
int a = 10;
int a = {0};
int a{0};
int a(0);
作为c++11新标准的一部分,支持了用花括号来初始化变量,这种初始化的形式被称为列表初始化。
值得一提的是:初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新的值来代替
当使用花括号来进行初始化时若发生内置类型转换有可能丢失信息时编译器将会报错!!!!
定义于函数体内的内置类型的对象如果没有初始化,则其值未定义。类的对象如果没有显示地初始化,则其值由类确定。
二、声明和定义
声明是使得名字为程序所知,而定义则会负责创建与名字相关的实体。
extern int i; //声明i而非定义i
int j; //定义j而非声明j
若在声明处初始化则声明失去意义变为定义
*在函数内部,如果试图初始化一个由extern 关键字标记的变量,将引发错误。
三、引用与const
符号:&;
声明如下:
int a = 10;
int &b = a;
指针引用的声明:
int *a;
int *&b = a;
注意:引用必须在声明时就初始化且只能用赋值运算符初始化。
const修饰的变量单元符是只读单元符。如:const int x =0;表示x是只读单元。
const还可以修饰指针。如:const int *p;int const *p; int *const p; const int *const p;
以上四个例子中第一和第二和例子的效果相同,它表示p所指的单元是只读的。
第三个例子表示单元符p是只读的,通过p修改该单元的值是不可以的。
最后一个例子则表示p和p所指的单元都是只读的不可修改。
其实const还能引用共用。
例如:
1>int a = 10;
const int &b = a;
2>const int a = 10;
int &b = a;
上述两个例子中例1表示应用b是只读的但是它的单元并不是只读的,所以可以用a来修改单元内的值,b则不可以。例2中原单元被修饰为了只读,所以不管是通过a,还是通过b都不能修改单元内的值。
四、内联函数
在编写程序时如果频繁的调用一个逻辑简答的函数时,有可能发生一个情况——调用函数的时间比执行函数体的时间都要长。为了解决这个弊端c++为我们提供了一个很好的解决办法。
那就是内联函数。
内联函数的定义如下:
例如:
inlin void function(int a,int b);
在函数定义时用inlin关键字修饰就可以了。
内联函数的效果:
在编译阶段编译器会把内联函数展开在函数调用的地方。这样做就避免了调用函数所用的时间,直接可以执行函数体的代码。
内联函数很好用,但是得注意以下几个事项。
内联函数必须是逻辑简单的函数,不能含有for、while和switch-case结构。否则将失去内联性。
递归函数不可以做为内联函数。
内联函数只能先定义后使用。
内联函数不能进行异常接口的声明。