gpt4 book ai didi

c++ - 编译器如何确定哪些成员函数发生变异?

转载 作者:太空宇宙 更新时间:2023-11-04 15:54:52 24 4
gpt4 key购买 nike

对我的一篇帖子的评论让我感兴趣:

Me too. I also give accessors/mutators the same name.

我对此感到疑惑,因为我一直使用 setBar(int bar) 而不是名称相同的修改器。我想知道:编译器是否可以根据 const 标识符确定在运行时会发生什么变化,或者它是否可以使用相同的函数名称,因为它有一个参数?

这样编译好吗:

class Foo
{
int bar_;

public:
int bar() { return bar_; }
void bar(int bar) { bar_ = bar; }
}

或者我是否必须这样做(我意识到无论如何我都应该这样做,只是和我一起做这件事):

int bar() const { return bar_; }

我不知道哪个是哪个。 Const 正确性很重要,所以我想我希望编译器反对重载,因为一个会变异,一个不会。

为什么会这样?

最佳答案

编译器首先查看的是您传递给函数的参数的数量和类型。这解决了 bar 上的过载问题在它甚至需要查看 const 之前-性。

如果标记bar()失败作为const , 编译器会在你第一次尝试调用 bar() 时通知你在 const 上对象的实例。

关于c++ - 编译器如何确定哪些成员函数发生变异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1230677/

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