【发布时间】:2012-06-03 01:14:09
【问题描述】:
我想要一个具有两个数组下标运算符重载的类:一个用于读取,另一个用于写入。
主要是保持变化的计数器。我读到(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;
};
但这在我的情况下不起作用。我正在使用带有 -std=c++11 的 g++ 4.7,实际上只有“正在写作”打印在屏幕上,即使我这样做了:
Array<int> a;
a[0] = 3;
cout << a[0] << endl;
我还注意到,后者永远不会通过使用 gcov 检查源来调用。 该页面上的方法完全错误,还是我误解了?
提前致谢。
【问题讨论】:
标签: c++ arrays class operator-overloading setter