C++-如何才能在改变声明为const的类中的成员函数中的修改成员变量的值?

C++-如何才能在改变声明为const的类中的成员函数中的修改成员变量的值?

想挽留 发布于 2017-10-21 字数 515 浏览 1194 回复 2

在C++中,如果定义了一个类成员是const的,那么就在其中修改成员变量的值。

class foo
{
public:
foo();
bool get_flag() const;
private:
bool flag;
int member_count;
};

foo::foo(): member_count(0),flag(false)
{
}
bool foo::get_flag() const
{
++member_count; //rror : l-value specifies const object
return flag;
}

int _tmain(int argc, _TCHAR* argv[])
{
foo foo;
foo.get_flag();
return 0;
}

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

偏爱自由 2017-11-09 2 楼

可以在成员变量声明的时候加上mutable。
在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。

class foo
{
public:
foo();
void increase();
private:
<coding-2 lang="other">
mutable int member_count;
};

foo::foo(): member_count(0)
{
}
void foo::increase()
{
++member_count;
}

int _tmain(int argc, _TCHAR* argv[])
{
const foo foo;
foo.increase(); //Error, foo can't be changed.
return 0;
}

晚风撩人 2017-11-05 1 楼

这样可以

 const foo foo;
const_cast<foo*>(&foo)->increase();