gpt4 book ai didi

c++ - 继承 : Reuse operator overload from friend class

转载 作者:行者123 更新时间:2023-11-30 03:42:04 24 4
gpt4 key购买 nike

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

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

}

除了最后一行,我基本上都听懂了。Matrix() 构造函数将任何矩阵设置为无效矩阵,因此首先将“this”或 vector 设置为无效。但如果参数有效且 Mx1,则 vector 将设置为有效的其他值。但是在最后一行,为什么没有*this=语句呢?我怎么知道它实际上是设置为等于其他的 vector ?

最佳答案

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

*this = other(等同于 operator=(other))会调用 Vector 的赋值运算符,这大概不会'在这种情况下无法工作。

关于c++ - 继承 : Reuse operator overload from friend class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37003948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com