谈到const,估计大部分人会立马想到const常量,这可不是一个好的条件反射;const更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。
函数前面的const: 返回值为const;
函数后面的const: const函数;
const的函数不能对其数据成员进行修改操作。
const的对象,不能引用非const的成员函数。
看如下代码:
class A{
public:
int a1()
{
_a = 10;
return _a;
}
int a2()const
{
return _a;
}
int a3()const
{
//_a = 30; //报错 const的函数不能对其数据成员进行修改操作。
return _a;
}
private:
int _a;
};
int main()
{
A a;
a.a1();
a.a2(); //非const的对象可以引用const的成员函数
a.a3();
const A b;
b.a1(); //报错 const的对象,不能引用非const的成员函数
b.a2();//const的对象只能引用const的成员函数
b.a3();
return 0;
}