继承:从朋友类重用运算符重载

时间:2016-05-03 12:18:57

标签: c++ matrix vector

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

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

}

我基本上理解除最后一行之外的所有事情。 Matrix()构造函数将任何矩阵设置为无效矩阵,因此首先要使用"这个"或者向量设置为无效。但是如果参数有效且Mx1,那么向量将被设置为有效的其他参数。但在最后一行,为什么没有* this =声明?我怎么知道它实际上是被设置为等于其他的向量?

1 个答案:

答案 0 :(得分:2)

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

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