C++笔记(5)const和mutable 关键字
C++笔记(5)const关键字
1、const A fun2( ); const A* fun3( );
返回const变量
2、类成员函数中const的使用
一般放在函数体后,形如:void fun() const;
任何不会修改数据成员的函数都因该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其他非const成员函数,编译器将报错,这大大提高了程序的健壮性。
3、const变量
4、const对象
只能访问const成员变量和const成员函数
据说有这种面试题:
class A
{
public :
char get_m() const
{
return m;
}
private:
char m;
}
请在函数get_m中改变m的值。
我想,对于这种流氓问题,只好使用流氓的做法:
char get_m() const
{
char * p = (char *) &m;
*p = ‘C’;
return m;
}
呵呵,可以做到,因为类内const函数是通过“把类内成员都作为const”来实现的。
不过这是我这种“流氓程序员”的做法。
实际上,经过同事的教导,应该使用mutable修饰符:
mutable char m;
这样即使在类的const函数内,m的类型也是可以改变的了。
另外,如果想不要这份工作,也可以这么写:
#define const
哈哈,这样面试官就不敢要你啦。:D
参考:
http://dulao5.blog.hexun.com/6687190_d.html