原因:当一个const对象调用其非const成员函数时,编译器不能保证其函数不修改对象内部数据,因此回报错。
解决:将函数声明为const
在写一个string简单的类时,想把该类主要用于函数传递。
因此免不了使用const &
这样传进去的函数,就不能使用非const的成员函数。
如上图,size()
函数不是const函数,而传入参数是const &
:
对一个const对象,调用其非const函数,报错方式如上图所示。
需要.size()
,.c_str()
都是const的函数。
如果成员函数不会改变对象内部状态,那就声明为const对象。