两个数组下标重载读写

Fra*_*ffa 1 c++ arrays setter class operator-overloading

我想要一个带有两个数组下标运算符重载的类:一个用于读取,另一个用于写入。

倾诉是保持变化的计数器。我读到(在http://faculty.cs.niu.edu/~mcmahon/CS241/c241man/node97.html)我可以做这样的事情:

template<typename T>
class Array
{
public:
    Array()
    {
        data = new T[100];
    }

    T &operator[] (int index)
    {
        cout << "Is writing\n";
        changes++;
        return data[index];
    }

    T operator[] (int index) const
    {
        cout << "Is reading\n";
        return data[index];
    }

private:
    T *data;
    int changes;
};
Run Code Online (Sandbox Code Playgroud)

但这在我的情况下不起作用。我正在使用带有 -std=c++11 的 g++ 4.7 并且实际上只有“正在写入”打印在屏幕上,即使我这样做:

Array<int> a;
a[0] = 3;
cout << a[0] << endl;
Run Code Online (Sandbox Code Playgroud)

我还注意到后者永远不会通过使用 gcov 检查源代码来调用。该页面上的方法是完全错误的,还是我误解了?

提前致谢。

Oli*_*rth 5

const重载仅在thisis 时调用const。它不确定是“读”还是“写”操作。