C++ - overloading [] operator

后端 未结 2 720
渐次进展
渐次进展 2021-02-04 04:07

I have a template class Array:

template 
class Array {
    T TheArray[SIZE];
public:
    void Initialize() {
        for (int idx         


        
2条回答
  •  天命终不由人
    2021-02-04 04:09

    First thing, regard [] as syntactic sugar for calling this->operator[].

    The const version will be called if this is a const pointer, else the non-const version will be called.

    Moving on, you ought to use const T& operator [](int idx) const {, i.e. have the const version return a const reference. That will save the overhead of taking a deep copy.

    Finally, the const-ness of a function is part of its signature. This allows you to overload based on const-ness. Otherwise you couldn't have the two versions of operator[].

提交回复
热议问题