读书人

类中函数不能声明为const,该怎么处理

发布时间: 2012-03-05 11:54:01 作者: rapoo

类中函数不能声明为const
在一个类中定义如下一个函数
void WorkList::show()
{
for(std::list <Work> ::iterator elem = works.begin();
elem != works.end(); elem++)
{
(*elem).showNumber();
cout < < ' ';
}
cout < < endl;
}

但改成
void WorkList::show() const
{...}
却会报错(已经在类的声明中也改成const了).这是为什么?
定义的WorkList类的成员变量只有
std::list <Work> works

这是为什么? 函数中并没有修改works的值..

[解决办法]
void WorkList::show() const
它的意思是不可以修改类的成员
[解决办法]
楼上的正确
std::list <Work> ::iterator 非常量迭代器可能会修改成员变量
WorkList::showNumber() 也许要为常量函数

const成员函数需要保证函数体内所有操作都不会修改到成员变量,任何潜在的可以修改成员变量的操作都会导致编译时的错误

读书人网 >C++

热点推荐