继承:重用友元类中的运算符重载

Inheritance: Reuse operator overload from friend class

本文关键字:运算符 重载 友元 继承      更新时间:2023-10-16

我创建了一个Vector类,它是Matrix类的朋友。我现在正试图创建一个转换构造函数,如果矩阵不具有维度Mx1,该构造函数将向量设置为无效矩阵。在演习的解决方案中,他们建议这样做:

Vector::Vector( const Matrix & other ): Matrix() {
    if (other.isValid() && other.getColumns() == 1)
        Matrix::operator=(other); // reuse matrix' operator=
}

除了最后一行,我基本上什么都懂。Matrix()构造函数将任何矩阵设置为无效矩阵,因此从"this"或向量设置为无效开始。但如果参数是有效的并且Mx1,那么向量将被设置为其他有效的。但在最后一行,为什么没有*this=语句?我怎么能知道它实际上是一个向量,它被设置为与其他向量相等?

VectorMatrix继承,Matrix::operator=(other);Matrix调用继承的赋值运算符
(友谊与此无关。)

*this = other(相当于operator=(other))将调用Vector的赋值运算符,该运算符可能在此上下文中不起作用。