运算符重载
在c++中怎么重载二维的下标运算符([ ][ ]),因为遇到这个问题不知好何解决,所以要请教大家:在一个类中定义一个矩阵(二维数组),然后通过重载二维下标运算符,来访问某个特定的元素。
#include<iostream> using namespace std; class Matrix { public : Matrix(int r,int c):r_(r),c_(c) { matrix_=new int*[r]; for(int i=0;i<r;++i) matrix_[i]=new int[c]; } ~Matrix() { for(int i=0;i<r_;++i) delete[] matrix_[i]; delete [] matrix_; } int* operator[] (const int i) { return matrix_[i]; } int* operator[] (const int i) const { return matrix_[i]; } friend ostream& operator<<(ostream& out,Matrix const& m) { for(int i=0;i<m.r_;++i) { for(int j=0;j<m.c_;++j) out<<m[i][j]<<' '; out<<endl; } return out; } friend istream& operator>>(istream& in,Matrix & m) { for(int i=0;i<m.r_;++i) for(int j=0;j<m.c_;++j) in>>m[i][j]; return in; } private: int** matrix_; int r_,c_; }; int main() { Matrix m(2,3); cin>>m; cout<<m<<endl; return 0; }