继承:重用友元类中的运算符重载
Inheritance: Reuse operator overload from friend class
我创建了一个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=语句?我怎么能知道它实际上是一个向量,它被设置为与其他向量相等?
Vector
从Matrix
继承,Matrix::operator=(other);
从Matrix
调用继承的赋值运算符
(友谊与此无关。)
*this = other
(相当于operator=(other)
)将调用Vector
的赋值运算符,该运算符可能在此上下文中不起作用。
相关文章:
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- <T> 通过模板化运算符重载将 std::complex 乘以双倍
- C++20概念:需要运算符重载
- 使用赋值运算符重载从类中返回jobject
- 在运算符重载定义中使用成员函数(const错误)
- 字节到位运算符重载C++
- 为什么在运算符重载时需要参考?
- 类中 c++ 的运算符 + 重载
- 算术复合运算符重载为非成员
- 运算符重载 (+),用于添加两个具有 C++ 的数组
- 交换运算符 + 重载会导致无限递归
- 如何理解新的运算符重载?
- 向量保持复数的运算符重载
- 如何创建运算符重载?
- 链接列表运算符重载没有打印出我想要的内容
- C++:需要帮助了解运算符重载错误
- 使用模板化运算符重载 XOR 运算符失败
- 如何确保接受的C++模板类型使运算符重载?
- 运算符重载使用运算符+添加类模板