#include
#include
using namespace std;
class Person{
friend ostream & operator<<(ostream &out,Person ob);
friend istream & operator>>(istream &in,Person &ob);
friend Person operator+(Person ob1,Person ob2);
private:
int num;
string name;
float score;
public:
Person(){}
Person(int num,string name,float score):num(num),name(name),score(score){}
};
ostream & operator<<(ostream &out,Person ob){
out<
return out;
}
istream & operator>>(istream &in,Person &ob){
in>>ob.num>>ob.name>>ob.score;
return in;
}
Person operator+(Person ob1,Person ob2){
Person tmp;
tmp.num=ob1.num+ob2.num;
tmp.name=ob1.name+ob2.name;
tmp.score=ob1.score+ob2.score;
return tmp;
}
int main(int argc, char *argv[])
{
Person lucy(100,"lucy",99.8f);
Person bob(101,"bob",88.8f);
Person tom(102,"tom",77.8f);
cout<
return 0;
}
代码没有问题,我想知道为什么tmp作为形参为什么return后没被销毁,并且将能够将信息打印出来
不好意思,第一二行分别是iostream和string
不是没销毁,是又自动创建了新的匿名临时变量。自己在构造函数和析构函数打印下就知道了