|
|
发表于 2009-3-8 18:33:00
|
显示全部楼层
Re:operator的问题程序
前面我的回答有错误。。
你原来算不对是因为你的成员 operator* 没有做要做的事。。。。只是按原值返回了而已,你为什么不:
return this->number * s.number;
这样你原来的也能用。
你编不过很正常!因为:
编译器在处理 t = st * d; 时
不知道是用友元的operator * 还是 成员函数 operator*
干掉你的成员函数operator* 改成:
#include<iostream>
using namespace std;
class Stonewt
{
private:
double number;
public:
Stonewt();
Stonewt(double n);
//Stonewt operator *(const Stonewt &s) const;
friend Stonewt operator *(const Stonewt &ls,const Stonewt &rs);
void Show()const;
};
Stonewt::Stonewt()
{
number = 0.0;
}
Stonewt::Stonewt(double n)
{
number = n;
}
//Stonewt Stonewt: perator *(const Stonewt &s) const
//{
// return s;
//}
Stonewt operator *(const Stonewt &ls,const Stonewt &rs)
{
return ls.number * rs.number;
}
void Stonewt::Show()const
{
cout<<" * is "<<number<<endl;
}
int main(void)
{
Stonewt st(30.0);
Stonewt s;
Stonewt t;
double d = 12.0;
s = d * st ;
s.Show();
t = st * d;
t.Show();
return 0;
}
就OK了,或者你可以继续保留你原来的代码 |
|