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引用变量可以赋值右值或者常量。
浙公网安备 33010602011771号