【发布时间】:2014-01-25 16:18:48
【问题描述】:
#include <iostream>
using namespace std;
class person {
public:
int age;
person(int v = 0) : age(v) {}
friend const person & operator++(person &); //pref
friend const person operator++(person &, int); //post
};
const person& operator++(person& a) {
a.age++;
return a;
}
const person operator++(person& a, int) {
person aux = a;
a.age++;
return aux;
}
int main() {
person p1(25), p2;
p2 = ++p1;
cout << p2.age<<endl;
p2 = p1++;
cout<< p2.age<<endl;
cout << p1.age;
}
也许写这篇文章的人使用了一些不必要的“额外的俚语”,或者我没有足够地阅读手册,但我不明白以下内容:
这里的“const”有什么意义,“person&”是什么意思? () 中的 person &a 或 person& a 我认为这意味着它是通过引用传递的。对吗?
friend const person& operator++(person &a);
为什么这里的人没有像上面那样的 & ?我知道这些参数是一个引用和一个 int。但是什么int?我在任何地方都看不到它像这样调用函数, int main() 中的 p1(25) 它是构造函数而不是函数。他怎么知道调用 p1++ 和调用 ++p 时要做什么。我知道重载我只是不明白第一个函数中的那个 & after person 是如何工作的,第二个函数中的 int 是什么。谢谢。
const person operator++(person& a, int)
【问题讨论】:
-
肯定你的“手册”还不够阅读。
-
非常有用,感谢 Andy Prowl,为您添加另一个帖子。
-
许多问题可以通过阅读 C++ 常见问题解答:parashift.com/c++-faq/increment-pre-post-overloading.html]
-
感谢 Thomas Matthews,该网站的优秀资源,parashift.com!很好,它涵盖了其他运算符的所有重载。
-
@erasmus77:您可能认为它没有用,但它确实有用。 “&”的含义在每本关于 C++ 的书中都有解释,以及前后增量的工作方式。如果您不知道这些内容的含义,那么我能给您的最有用的建议就是阅读更多相关信息。
标签: c++ overloading operator-keyword