我创建了一个类Vector,它是Matrix类的朋友。我现在正在尝试创建一个转换构造函数,如果矩阵没有维度Mx1,则将向量设置为无效矩阵。在练习的解决方案中,他们建议这样做:
Vector::Vector( const Matrix & other ): Matrix() {
if (other.isValid() && other.getColumns() == 1)
Matrix::operator=(other); // reuse matrix' operator=
}
我基本上理解除最后一行之外的所有事情。 Matrix()构造函数将任何矩阵设置为无效矩阵,因此首先要使用"这个"或者向量设置为无效。但是如果参数有效且Mx1,那么向量将被设置为有效的其他参数。但在最后一行,为什么没有* this =声明?我怎么知道它实际上是被设置为等于其他的向量?
答案 0 :(得分:2)
Vector
继承自Matrix
,Matrix::operator=(other);
从Matrix
调用继承的赋值运算符。
(友谊与此无关。)
*this = other
(相当于operator=(other)
)会调用Vector
的赋值运算符,该运算符可能在此上下文中无效。