c++的关于类模板中重载函数的问题

2025-04-13 15:51:17
推荐回答(1个)
回答1:

/*
你的代码中

T_counter& operator =(T_counter x)
{
this->data=x.data;
return *this;
}

T_counter& operator +(T_counter x)
{
this->data+=x.data;
return *this;
};
如果运行 c=a+b;则c是a+b的值,a也是a+b的值了!
*/

//把代码改成下面这样试试
#include
using namespace std;
template
class T_counter
{
public:
T_counter(t a=0)
{
data=a;
}
T_counter& operator =(T_counter x)
{
this->data=x.data;
return *this;
}
T_counter operator +(T_counter x)
{
T_counter y;
y.data=this->data+x.data;
return y;
}
T_counter operator -(T_counter x)
{
T_counter y;
y.data=this->data-x.data;
return y;
}
T_counter operator *(T_counter x)
{
T_counter y;
y.data=this->data*x.data;
return y;
}
friend ostream & operator<<(ostream &woca ,const T_counter & x)
{
woca<<"the value of the T_counter's object is "<return woca;
}
friend istream & operator >>(istream &input,T_counter & x)
{
cin>>x.data;
return input;
}
t getdata()
{
return this->data;
}

private:
t data;
};

int main()
{
T_counter a(5.9),b(6.6),c(0);
cout<c=a+b;
cout<<"a+b "<c=(a-b);
cout<<"a-b "<c=a*b;
cout<<"a*b "<cout<<"input c."<cin>>c;
cout<system("pause");
return 0;
}