1

我正在构建一个以 anstd::vector作为唯一成员的自定义向量类,并通过重载 +、- 和其他函数向其中添加各种数学函数。

我这样做是为了直接访问矢量元素:

template <typename T, int N>
class Vector{

    std::vector<T> v;

public:

    Vector():v(N,0){}

    const T& operator[](int i)const{
        return v.at(i);
    }
    T& operator[](int i){
        return v.at(i);
    }

在这种情况下,这是一种可接受的重载技术,这样我就可以从 a 中读取元素并从const Vector<...>非常量中分配给元素?由于at返回一个引用,在这种情况下可以正确地分配给一个元素吗?

4

1 回答 1

3

是的,这是对重载的完全合理的使用。但是,我质疑 的使用at。最好同时拥有atoperator[],它们会传递给它们的std::vector对应物。这样,您可以让调用者在安全性和性能之间进行选择(这就是两个版本首先存在的原因)。

于 2013-06-04T08:31:41.947 回答