Ash*_*ban 6 c++ operator-overloading operator-keyword commutativity
我有2个表示矩阵的类:
1.RegularMatrix - O(n ^ 2)表示
2. SparseMatrix - 表示为链表(没有零)的矩阵.
让我说我有:
RegularMatrix a;
SparseMatrix b;
Run Code Online (Sandbox Code Playgroud)
我希望能够做到:
a+b;
Run Code Online (Sandbox Code Playgroud)
并且:
b+a;
Run Code Online (Sandbox Code Playgroud)
所以我正在重载+运算符.我的问题是,因为我希望加法是可交换的(a + b = b + a),我是否需要实现2个过载,每种情况一个?
RegularMatrix operator+(const RegualarMatrix &, const SparseMatrix &);
RegularMatrix operator+(const SparseMatrix & ,const RegualarMatrix &);
Run Code Online (Sandbox Code Playgroud)
或者是否有编译器自己决定的一般形式?
谢谢
是的,你需要两个版本.但是如果操作真的是可交换的,你可以把它转发到另一个
RegularMatrix operator+(const SparseMatrix &a, const RegualarMatrix &b) {
return b + a;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3329 次 |
| 最近记录: |