2 anhaoxuan anhaoxuan 于 2016.04.30 17:28 提问

关于C++加法运算符重载的一个超简单问题

以下代码:
#include
using namespace std;
class num
{
public:
num(){n=1;cout<<"构造函数执行\n";}
num(int i){n=i;cout<<"带一个参数的构造函数执行\n";}
num(const num&s){this->n=s.n;cout<<"复制构造函数执行\n";}
~num(){cout<<"析构函数执行\n";}
int get()const{return n;}
void set(int x){n=x;}
const num operator+(const num&r){return num(n+r.get());}

private:
int n;
};
int main()
{
num one(1),two(2),three;
three=one+two;
cout<<"one:"<<one.get()<<endl;
cout<<"two:"<<two.get()<<endl;
cout<<"three:"<<three.get<<endl;
return 0;

}

运行后three的结果我希望是3
但程序返回的是1
请问问题出在哪里?

4个回答

ftlisdcr
ftlisdcr   2016.04.30 20:05
已采纳

事实证明结果的确就是3啊图片说明

还有,你的代码里three.get都没有“()”,真的能运行通不报错吗?

anhaoxuan
anhaoxuan 谢谢您的指点 这些日子我忙于其他事物现在才采纳 抱歉 愿您幸福平安!
一年多之前 回复
gotope
gotope   2016.04.30 20:49

three.get()
加上能得出3

anhaoxuan
anhaoxuan 谢谢您的指点 幸福 平安
一年多之前 回复
CSDNXIAON
CSDNXIAON   2016.04.30 17:32

C++中的运算符重载问题
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

nblsadnfh
nblsadnfh   2016.04.30 18:34

运行没有问题,答案是3啊。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!