C++中const使用

const引用可以赋值右值或者字符字面值

例如:const int a=7;

或者可以赋值可以隐式转换的类型对象例如

int i=7;

const double a=&i;

当const引用对象作为函数参数传递与非const引用对象作为参数传递有一些区别

前者可以传递实参可以是右值或者字符串字面值,

后者不能传递右值或者字符字面值,也不能传递const对象

例如1:find_char(string &s,char c)

{

 int i=0;

while(i!=s.size()&&s[i]!=0)

++i;

return i;

}

这个函数不能使用find_char("hellow world",'o');

例2:不能给函数传入const对象

is_sentence(const string &s)

{

 find_char(s,'i');

}

 类的const成员函数:

每个类的成员函数总是有一个this指针,如果成员函数为cosnt类型,则隐含传入的是const type const this指针所以:

1)不能通过这个函数改变调用对象的任何数据成员,除非mutable修饰的数据成员。

2)返回此对象的引用也必须返回const引用类型。

3)在此函数调用的类成员函数也必须是const类型,(因为第四点,const指针指向的是const对象,所以只能使用const函数)

4)const类型对象只能调用const函数,比如:参数类型为cosnt引用,那么此引用对象只能调用cosnt函数,不然编译无法通过。

const变量:

const可以修饰类的成员变量,那么变量必须在构造函数的初始化列表中初始化。如果修饰static变量,可以在类定义中初始化,但是也需要在类外进行定义无需赋值。

const主要是取代define,但是前者会进行类型检查,后者为简单的取代。

const引用变量可以赋值右值或者常量。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2013-12-10 15:43  菜鸟基地  阅读(108)  评论(0)    收藏  举报

导航