为派生类实现内部运算符

时间:2017-12-07 13:44:37

标签: c++ inheritance

假设我有一个通用的Matrix类,我已经实现了运算符*,它执行通常的矩阵乘法。

这样的运营商有以下签名:

Matrix operator*(const Matrix & ) const; 

我现在希望为表示3x3矩阵的继承类Matrix3实现另一个*运算符。

它将具有以下签名:

Matrix3 operator*(const Matrix3 &) const;

我正在寻找实现此运算符的正确方法,以便重用已经为基类编写的代码,并最大限度地降低成本(即复制)。

1 个答案:

答案 0 :(得分:1)

这应该可以正常工作:

// Either return base class
Matrix operator*(const Matrix3& other) const
{
    return Matrix::operator*(other);
}

// Or construct from a Matrix
Matrix3 operator*(const Matrix3& other) const
{
    return Matrix3(Matrix::operator*(other));
}

// Either construct the Matrix data in the Matrix3
Matrix3(const Matrix& other)
{
    // Initialize Matrix specifics
    // Initialize Matrix3 specifics
}

// Or pass the Matrix to it's base class so it can take care of the copy
Matrix3(const Matrix& other) : Matrix(other)
{
    // Initialize Matrix3 specifics
}