gpt4 book ai didi

c++ - 使用标量类型的 "const"的好处? (例如 "const double"或 "const int")

转载 作者:可可西里 更新时间:2023-11-01 15:55:53 25 4
gpt4 key购买 nike

///////////////////////////////////////
class A {
...
const double funA(void)
{...}
};

A a;
double x = a.funA();
// although the intention is to
// enforce the return value to be const and cannot be
// modified, it has little effect in the real world.

class A2 {
...
double funB(void)
{...}
};

///////////////////////////////////////
class A {
void setA(const double d)
{ // now you cannot change the value of d, so what?
// From my point of view, it is NOT a good practice to change the pass-in parameter
// in this case, unless you want the caller to receive that change
// instead, you can do
// const double dPassIn = d;
/ /then use dPassIn instead.
...
}
};

class A2 {
void setB(double d)
{...}
};

//////////////////////////////////////

根据我的理解,我们应该更喜欢使用 A2::funBA2::setB 因为 constA::funAA::setA 都没什么意义。

//更新//

    FMOD_RESULT F_API EventSystem::getReverbPresetByIndex(const int index, 
FMOD_REVERB_PROPERTIES *props, char **name = 0);

我认为 FMOD 是一个设计良好的包,它确实在函数参数列表中使用了 const int。现在,我同意 A::setA(const double d) 有它的优势。

最佳答案

当按值返回时,常量无效,因为无论如何都无法强制执行。一些编译器发出警告。然而,返回指向常量数据的指针/引用确实有意义。

将参数传递给函数时,最好(更安全,允许编译器优化)将其作为常量传递,除非您绝对需要更改数据。

关于c++ - 使用标量类型的 "const"的好处? (例如 "const double"或 "const int"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8406898/

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