const修饰的成员函数的一点小疑惑Screen myScreen// this code fails if display is a const member func
const修饰的成员函数的一点小疑惑
Screen myScreen;
// this code fails if display is a const member function
// display return a const reference; we cannot call set on a const
myScreen.display().set('*');
display是一个const成员函数,他返回一个指向自身(*this)的const的引用。
set是一个非const成员函数。
请问这段代码为什么是错的?
另外问一下,const在平时工作时用的是否很多?这是用或不用是否为个人习惯?
[解决办法]
工作中用的多,为了保证数据的安全性
[解决办法]
不是习惯问题,为了安全(不要让任何人都有读写权限),为了性能(编译器可以优化),要做为接口的一部分。
[解决办法]
由于display是一个const成员函数,他返回一个指向自身(*this)的const的引用。所以在myScreen.display()调用结束后,myScreen就会成为const对象,而const对象是不能调用非const成员函数的。
具体可以参考我的blog中对const的几种常用说明:http://blog.csdn.net/freesnail/article/details/8762895
[解决办法]
需要将set函数增加const修饰
