gpt4 book ai didi

c++ - 为什么operator[]有两个定义?

转载 作者:搜寻专家 更新时间:2023-10-31 00:14:39 24 4
gpt4 key购买 nike

我目前正在研究我的数据结构类(class)中的 Material ,其中涉及一个练习,我们尝试定义一个模拟 vector 的类,以便我们了解引擎盖下发生的事情。在我意识到 operator[] 有两个定义之前,一切都说得通了。在上下文中:

typedef unsigned int size_type;
T& operator[] (size_type i) { return m_data[i]; }
const T& operator[] (size_type i) const { return m_data[i]; }

第一个问题:为什么operator[]需要有两个定义?

第二个问题:为什么这不会引发多重定义错误?

抱歉,如果有任何内容含糊不清或看起来很明显。我是 C++ 的新手,我唯一的其他经验是使用 Java。谢谢!

最佳答案

这是一个常见的 C++ 模式。

*thisconst;换句话说,如果它与 const 对象一起使用。由于 *this 是 const,假设它不能被修改是合理的,所以 operator[] 必须返回一个 const 引用。

另一个成员函数适用于任何对象,但由于它不如 const 那个具体,因此它仅适用于 *this 不是 const 的情况。在那种情况下,大概可以修改返回的引用 (object[3] = new_value;),因此返回类型不是 const

关于c++ - 为什么operator[]有两个定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22419578/

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