0
演算子,
をオーバーロードして、この構文を使用して小数部を割り当てることができます: frac = 1, 2
。 ()
オペレータなしで正常に動作しました。カッコのデフォルト動作を上書きする方法はありますか?
#include <iostream>
using namespace std;
class fraction {
private:
int m_num;
int m_den;
public:
fraction(int num, int den)
:m_num(num), m_den(den) {
}
fraction& operator =(int num) {
m_num = num;
return *this;
}
fraction& operator ,(int den) {
m_den = den;
return *this;
}
public:
friend
ostream& operator <<(ostream& out, const fraction& rhs) {
return out << rhs.m_num << ", " << rhs.m_den;
}
};
int main() {
fraction f(1, 2);
cout << "original f = " << f << endl;
f = 4, 5;
cout << "expected = " << f << endl;
f = (10, 11);
cout << "unexpected = " << f << endl;
}
** OUTPUT
$ prog.exe
original f = 1, 2
expected = 4, 5
unexpected = 11, 5
私が誤ってnum
とden
周り()
を入れて、出力から、私はoperator()
の優先順位は、実際の結果に影響を与え実現。それは奇数であるoperator ,
だけを使用して評価しました。だから私の質問は、この特定の状況でオペレータ()
の影響を無視する方法(マクロかもしれません?)ですか?
なし '演算子()'ここではありません。 –
いいえ、デフォルトの 'operator 'を使用して' operator = 'のみを評価しました。かっこを使用すると、それが起こります。そして、あなたが望むものをする方法はありません(もし存在するなら、あなたはしてはいけません)。 –
mg。私はオペレータが虐待を過負荷にした事例を見て以来、長い時間が経ちました。 – usr