gpt4 book ai didi

c++ - 由非常量成员函数更改的可变变量

转载 作者:行者123 更新时间:2023-11-30 02:55:43 24 4
gpt4 key购买 nike

我正在学习 C++,我读到:如果一个数据成员被声明为可变的,那么从 const 成员函数中为这个数据成员赋值是合法的。 但是下面的代码通过 gcc 编译没有任何错误或警告。(这不是真实世界的代码示例,我只是为了测试 mutable 关键字而编写的)

class M
{
public:
M(){x=10;};
int getX() {x++; return x;};
private:
mutable int x;
};

int main()
{
M xx;
std::cout << xx.getX() << std::endl;
}

我不应该将 getX 声明为 const 吗?

编辑1(ForEver的回答让事情更清楚),下面的代码将不会被编译:

class M
{
public:
M(){x=10;};
int getX() const {x++; return x;};
private:
int x;
};

int main()
{
M xx;
std::cout << xx.getX() << std::endl;
}

最佳答案

const 函数中修改可变变量是合法的,当然在 non-const 函数中修改可变变量也是合法的(因为每个 non-const 成员变量)。 mutable 关键字允许在 const 函数中修改变量,但对在 non-const 函数中修改没有任何限制。

关于c++ - 由非常量成员函数更改的可变变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16206712/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com