【发布时间】:2012-09-28 00:28:52
【问题描述】:
本文作者选择返回类型为类类型http://www.learncpp.com/cpp-tutorial/92-overloading-the-arithmetic-operators/强调文本,我们可以将返回类型改为返回int,因为我想做以下,我试过这个和它工作得很好,为什么作者做了返回类型类??
#include <cstdlib>
#include <iostream>
using namespace std;
class Cents // defining new class
{
private:
int m_Cents;
int m_Cents2;
public:
Cents(int Cents=0, int Cents2=0) // default constructor
{
m_Cents=Cents;
m_Cents2=Cents2;
}
Cents(const Cents &c1) {m_Cents = c1.m_Cents;}
friend ostream& operator<<(ostream &out, Cents &c1); //Overloading << operator
friend int operator+(const Cents &c1, const Cents &c2); //Overloading + operator
};
ostream& operator<<(ostream &out, Cents &c1)
{
out << "(" << c1.m_Cents << " , " << c1.m_Cents2 << ")" << endl;
return out;
}
int operator+(const Cents &c1, const Cents &c2)
{
return ((c1.m_Cents + c2.m_Cents) + (c1.m_Cents2 + c2.m_Cents2 ));
}
int main(int argc, char *argv[])
{
Cents cCents(5, 6);
Cents bCents;
bCents = cCents;
cout << bCents << endl;
Cents gCents(cCents + bCents, 3);
cout << gCents << endl;
system ("PAUSE");
return 0;
}
【问题讨论】:
-
当你重载像
+这样的运算符时,它应该返回与参数相同的类型! -
好的,但是这条线呢:Cents gCents(cCents + bCents, 3);如何将两个值传递给构造函数
-
如果你加了苹果,你会退回橘子吗?那么为什么要在添加 Cents 时返回 int 呢?
-
因为我想要这条线 Cents gCents(cCents + bCents, 3);所以我可以传递加两美分的总和并将其与另一个数字一起使用以将其传递给构造函数
-
好吧,C++ 对你来说真的没有意义,除非你更彻底地阅读这本书,否则所有其他的东西都会看起来完全没有意义,你真的不应该发布所有的东西对SO来说看起来很荒谬。由于这个原因(即没有研究工作),我不得不对此投反对票。