取引用和取内容:
int& operator*() const {return node->element;}
int operator->() const {return &node->element;}
前加加和后加加:
// increment
iterator& operator++() // preincrement
{node = node->next; return *this;}
iterator operator++(int) // postincrement
{iterator old = *this;
node = node->next;
return old;
}
判断操作符:
// equality testing
bool operator!=(const iterator right) const
{return node != right.node;}
bool operator==(const iterator right) const
{return node == right.node;}
索引操作符:
template<typename T>
T& Matrix<T>::operator()(int i, int j)const
{
if(i < 1 || i > m_rows|| j < 1 || j > m_columns){
std::cerr<<"out of range."<<std::endl;
throw "out of range.";
}
return m_element[(i-1) * m_columns + j - 1];
}
赋值操作符:
template <typename T>
Matrix<T>& Matrix<T>::operator=(const Matrix<T>& matrix)
{
if(this != &matrix){
delete [] m_element;
m_rows = matrix.m_rows;
m_columns = matrix.m_columns;
m_element = new T[m_rows * m_columns];
std::copy(matrix.m_element,
matrix.m_element + m_rows * m_columns,
m_element);
}
return *this;
}