设为首页 加入收藏

TOP

多维数组下标运算符重载
2014-11-18 18:05:33 】 浏览:1812
Tags:多维 运算 重载

  遇到一道笔试题:设计一个矩阵类,行和列数通过构造函数输入,支持a[][]取值和赋值。


  这实际上就是一个二维数组下标运算符重载的问题,解决思路如下:


  (1)用一维数组代替二维数组分配内存,从而获得连续的内存空间,取值时通过计算获得相应行和列上的值


  (2)设计两个类,分别重载operator[],一个获取行,一个获取列


  实现如下:


  代码class MatrixEntry{


  friend class Matrix; //友元类,访问私有变量m_currentRow


  public:


  MatrixEntry(int m, int n) : m_row(m), m_col(n)


  {


  m_pMatrix = new int[m * n * sizeof(int)];


  }


  ~MatrixEntry()


  {


  delete m_pMatrix;


  }


  int & operator[](int col)


  {


  return m_pMatrix[m_currentRow * m_col + col];


  }


  private:


  int * m_pMatrix; //存储矩阵的一维数组


  int m_row; //矩阵的行数


  int m_col; //矩阵的列数


  int m_currentRow; //指示当前需要访问哪一行,该值由下面的Matrix类设置


  };


  class Matrix{


  public:


  Matrix(int m, int n) : m_entry(m, n)


  {


  }


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇计算机二级辅导:C/C++中的联合uni.. 下一篇计算机二级C++辅导:打印自身的C+..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目