c – 两个不同对象的交换运算符重载
作者:互联网
我有2个代表矩阵的类:
1. RegularMatrix – O(n ^ 2)表示
2. SparseMatrix – 表示为链表(没有零)的矩阵.
让我说我有:
RegularMatrix a;
SparseMatrix b;
我希望能够做到:
a+b;
并且:
b+a;
所以我正在超载操作符.我的问题是,既然我希望加法是可交换的(a b = b a),我是否需要实现2个过载,每种情况一个?
RegularMatrix operator+(const RegualarMatrix &, const SparseMatrix &);
RegularMatrix operator+(const SparseMatrix & ,const RegualarMatrix &);
或者是否有编译器自己决定的一般形式?
谢谢
解决方法:
是的,你需要两个版本.但是如果操作真的是可交换的,你可以把它转发到另一个
RegularMatrix operator+(const SparseMatrix &a, const RegualarMatrix &b) {
return b + a;
}
标签:c,operator-overloading,operator-keyword,commutativity 来源: https://codeday.me/bug/20191002/1840728.html