gpt4 book ai didi

c++ - getter 方法中的 Const 限定符

转载 作者:行者123 更新时间:2023-11-30 01:17:06 27 4
gpt4 key购买 nike

为什么 getter 和 setter 需要 const 限定符?好的,我想 setter 方法的一个原因是防止 value 在方法体中发生变化,从而减少错误。我觉得不太合理,是不是就这个原因?

我完全不明白为什么我需要在 getter 方法中使用它?

class turbo
{
int i = 10;
public:
void setI(const int value) {i=value}
int getI() const {return i;}
}

最佳答案

假设我有一个 const turbo 类型的变量。然后我可以调用标记为 const没有其他 的方法。此外,我可以确定调用此类方法不会更改 turbo 实例的状态。这是因为标记为 const 的成员函数不能更改成员变量或对其调用非 const 方法。

因此,一般来说,getter 可以是const,因为它们不会改变对象的状态。 setter 不应该是 const。更好的是,完全避免编写 setter,因为它可能难以控制对象的内部一致性并且往往会使多线程编程复杂化:尽可能多地在构造函数中设置。

这会显着提高程序稳定性。这就是为什么 C++ 程序员努力争取尽可能多的 const 正确性。

(当然,C++ 允许您使用 const_castmutable 来消除这些好处,但这样做应该谨慎)。

关于c++ - getter 方法中的 Const 限定符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25265884/

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