gpt4 book ai didi

c++ - 为什么我们在这个例子中同时需要 const 和非常量 getter

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

我遇到了这个例子 here :

#include <vector>
#include <cstddef>

template<typename Tag>
class Ref_t {
std::size_t value;

friend Tag& element(Ref_t r, std::vector<Tag>& v) {
return v[r.value];
}

friend const Tag& element(Ref_t r, const std::vector<Tag>& v)
{
return v[r.value];
}
public:
// C'tors, arithmetic operators, assignment

};

struct A{};
struct B{};

typedef Ref_t<A> ARef_t;
typedef Ref_t<B> BRef_t;

int main() {
std::vector<A> va;
ARef_t ar;
A& a = element(ar, va);

}

所以问题是为什么我们需要 -Ref_t 类中的两个 friend 元素 函数?

最佳答案

这两个函数的区别在于,一个非常量 vector 的element()本身是非常量的,但是如果整个 vector 是const,那么每个element() 也是常量。

int main() {
std::vector<A> const cva = foo();
ARef_t ar;
A const& a = element(ar, cva);
}

关于c++ - 为什么我们在这个例子中同时需要 const 和非常量 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1537271/

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