単項演算子が動作しない理由を理解できません。私はいくつかの概念が欠けていると確信しています。助けてください。演算子予期しない結果のオーバーロード
#include <iostream>
using namespace std;
class Distance {
private:
int feet; // 0 to infinite
int inches; // 0 to 12
public:
// required constructors
Distance(){
feet = 0;
inches = 0;
}
Distance(int f, int i){
feet = f;
inches = i;
}
// method to display distance
void displayDistance() {
cout << "F: " << feet << " I:" << inches <<endl;
}
// overloaded minus (-) operator
Distance operator-() {
return Distance(-feet, -inches);
}
};
int main() {
Distance D1(11, 10), D2(-5, 11);
-D1; // apply negation
D1.displayDistance(); // display D1
-D2; // apply negation
D2.displayDistance(); // display D2
return 0;
}
出力は次のようになります。
F: 11 I:10
F: -5 I:11
そして私はそれが私が概念をしないのですどこ-11 -10と5と
-11わからないことが期待しました。ところで、私はそれを新しいDistance
オブジェクトを返しますhere
'int n = 5; -5; cout << n << endl; '4を印刷すると思いますか? – juanchopanza
@元祖パンジャー!私はそれが5と-5を印刷することを期待しています –
私はどのようにそれらがあなたが示しているまったく同じ出力を表示するそのWebサイトで好きです。どうやら彼らはコンソールからそれをコピーしたことはありませんでした。そして、この出力は、議論されたオペレータのオーバーロードがうまくいかなかったことを示しています。なぜ偽のチュートリアルを使用するのか(http://stackoverflow.com/q/388242/11683)の別の例 – GSerg