嗨我有這樣的代碼,我認爲朋友重載運算符和轉換運算符都有類似的功能。但是,爲什麼在這種情況下調用了朋友重載運算符?規則是什麼?爲什麼朋友重載運算符在這種情況下首選轉換運算符
非常感謝!
class A{
double i;
public:
A(int i):i(i) {}
operator double() const { cout<<"conversion operator"<<endl;return i;} // a conversion operator
friend bool operator>(int i, A a); // a friend funcion of operator >
};
bool operator>(int i, A a){
cout<<"Friend"<<endl;
return i>a.i;
}
int main()
{
A aa(1);
if (0 > aa){
return 1;
}
}
或者,如果他將比較更改爲'0L> aa',他也會收到編譯錯誤。所以無論如何他目前的解決方案是不可接受的,我認爲=) –