首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求教运算符重载有关问题

2012-05-04 
求教运算符重载问题#include iostreamusing namespace stdtemplateclass T, size_t S class A {publi

求教运算符重载问题
#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里面就是用了这个,可以伪装数组用法
[解决办法]

探讨
如果是重载的话,那么这个函数表示的什么意思?

[解决办法]
操作符重载,前一个是右值情况,后一个是左值情况。
左右值时,建议使用const T operator[](size_t i)const{..}定义,当T是一个指针类型时,这点很重要。

热点排行
Bad Request.