假设我有一个通用的Matrix类,我已经实现了运算符*,它执行通常的矩阵乘法。
这样的运营商有以下签名:
Matrix operator*(const Matrix & ) const;
我现在希望为表示3x3矩阵的继承类Matrix3实现另一个*运算符。
它将具有以下签名:
Matrix3 operator*(const Matrix3 &) const;
我正在寻找实现此运算符的正确方法,以便重用已经为基类编写的代码,并最大限度地降低成本(即复制)。
答案 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
}