其他分享
首页 > 其他分享> > c – 两个不同对象的交换运算符重载

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