gpt4 book ai didi

c++ - 为什么要做两个函数? (一个是非常量,另一个是常量)

转载 作者:太空狗 更新时间:2023-10-29 20:46:13 24 4
gpt4 key购买 nike

我是 C++ 的新手。我正在查看 Box2D 的源代码以了解专业人士如何管理他们的代码,并发现了很多这样的对:

inline b2Body* b2World::GetBodyList()
{
return m_bodyList;
}

inline const b2Body* b2World::GetBodyList() const
{
return m_bodyList;
}

我突然想到的问题是,我们怎么知道我们调用了哪个函数?这种配对的原因是什么?

最佳答案

不能在const b2World 上调用非const 版本;请注意,方法的返回类型不同。尝试运行

#include <iostream>

struct Foo
{
void greet() { std::cout << "Hello, world!\n"; }
void greet() const { std::cout << "Hello, const world!\n"; }
};

int main()
{
Foo foo;
foo.greet();

Foo const &fooref(foo);
fooref.greet();
}

另见 C++ FAQ Lite on const-correctness .

关于c++ - 为什么要做两个函数? (一个是非常量,另一个是常量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8679703/

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