求教运算符重载问题
#include <iostream>
using namespace std;
template<class T, size_t S> class A {
public:
T operator[] (size_t i) const {
return m_t[i];
}
T& operator[] (size_t i) {
return m_t[i];
}
private:
T m_t[S];
};
int main (void) {
A<A<int,4>,3> m;
for (size_t i = 0; i < 3; i++)
for (size_t j = 0; j < 4; j++)
m[i][j] = (i+1)*10+j+1;
for (size_t i = 0; i < 3; i++) {
for (size_t j = 0; j < 4; j++)
cout << m[i][j] << ' ';
cout << endl;
}
return 0;
}
疑问:
T operator[] (size_t i) const {
return m_t[i];
}
T& operator[] (size_t i) {
return m_t[i];
}
在这两个函数中,是属于函数定义还是运算符重载? 不是很懂,如果是运算符重载,那么是[]的重载么? 表达的是什么意思?麻烦大家指点
[解决办法]
下标运算符的重载。当然也是函数定义。
[解决办法]
这个是属于运算符重载的,vector里面就是用了这个,可以伪装数组用法
[解决办法]