Vid*_*rom 0 c++ overloading operator-keyword
我不明白为什么一元运算符不起作用.我相信我错过了一些概念.请帮忙.
#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;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
F: 11 I:10
F: -5 I:11
Run Code Online (Sandbox Code Playgroud)
我预计它会是-11 -10和5和-11
小智 5
这些线
-D1; // apply negation
-D2; // apply negation
Run Code Online (Sandbox Code Playgroud)
不要做你认为他们正在做的事情.假设我们有一个int变量:
int var = 3;
-var; // What does this do?
Run Code Online (Sandbox Code Playgroud)
这是做什么的?-var 评估到-3,但不改变 var等于-3.如果要修改var,则按照通常的方式分配给它:
var = -var; // Now var == -3
Run Code Online (Sandbox Code Playgroud)
与您的Distance类型相同.-D1不修改D1,它不应该修改它,因为这不是一元operator-预期要做的.只需将否定版本分配回自身,如下所示:
D1 = -D1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |