gpt4 book ai didi

setter/getter 中的 C++ const

转载 作者:IT老高 更新时间:2023-10-28 21:59:03 31 4
gpt4 key购买 nike

我仍在学习 C++,而且我到处都在阅读我必须使用 const 的所有地方(我认为是出于速度原因)。

我通常这样写我的getter方法:

const bool isReady() {
return ready;
}

但我已经看到一些 IDE 以这种方式自动生成 getter:

bool getReady() const {
return ready;
}

但是,在编写委托(delegate)时,如果 const 在函数之后,我碰巧发现了这个错误:

member function 'isReady' not viable: 'this' argument has type 'const VideoReader', but function is not marked const

那么,编写 const getter 的更好方法是什么?我真的需要关心吗?

最佳答案

这两种方式有很大的不同。

const bool isReady()

上面的代码会返回一个const bool,但不保证对象不会改变其逻辑状态。

bool isReady() const

这将返回一个bool,它保证你的对象的逻辑状态不会改变。在这种情况下,不需要在返回类型前面写 const。返回一个 const bool 是没有意义的,因为它无论如何都是一个拷贝。所以让它 const 是没用的。 const correctness 需要第二个 const ,这不是出于速度原因,而是为了使您的程序更可靠和安全。

关于 setter/getter 中的 C++ const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21478342/

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