level 8
HapHapYear
楼主
这个问题也许有点蠢。但真心想不起来了。如下面这段程序:
#include<iostream>
using namespace std;
class Rational
{
public:
Rational(int i=0,int j=1);
int operator<(Rational r) const;
int operator<=(Rational r) const;
int operator==(Rational r) const;
int operator!=(Rational r) const;
void set()
{
cin>>num;
cin>>den;
}
private:
long num,den;
};
Rational::Rational(int i,int j)
{
if(j==0)
{
printf("分母不能为0\n");
exit(0);
}
num=i;
den=j;
}
int Rational::operator<(Rational r) const//标记
{
return num*r.den<r.num*den;
}
int Rational::operator<=(Rational r) const
{
return num*r.den<=r.num*den;
} int Rational::operator==(Rational r) const
{
return num*r.den==r.num*den;
} int Rational::operator!=(Rational r) const
{
return num*r.den!=r.num*den;
} int main()
{
Rational a;
Rational b;
a.set();
b.set();
if(a<b)
cout<<"a<b"<<endl;
if(a<=b)
cout<<"a<=b"<<endl;
if(a!=b)
cout<<"a!=b"<<endl;
if(a==b)
cout<<"a==b"<<endl;
return 0;
}
我做了标记的那行重载"<",num和den是私有的成员,r.den,r.num是怎么在重载操作中直接调用的??
....
2012年10月17日 01点10分
1
#include<iostream>
using namespace std;
class Rational
{
public:
Rational(int i=0,int j=1);
int operator<(Rational r) const;
int operator<=(Rational r) const;
int operator==(Rational r) const;
int operator!=(Rational r) const;
void set()
{
cin>>num;
cin>>den;
}
private:
long num,den;
};
Rational::Rational(int i,int j)
{
if(j==0)
{
printf("分母不能为0\n");
exit(0);
}
num=i;
den=j;
}
int Rational::operator<(Rational r) const//标记
{
return num*r.den<r.num*den;
}
int Rational::operator<=(Rational r) const
{
return num*r.den<=r.num*den;
} int Rational::operator==(Rational r) const
{
return num*r.den==r.num*den;
} int Rational::operator!=(Rational r) const
{
return num*r.den!=r.num*den;
} int main()
{
Rational a;
Rational b;
a.set();
b.set();
if(a<b)
cout<<"a<b"<<endl;
if(a<=b)
cout<<"a<=b"<<endl;
if(a!=b)
cout<<"a!=b"<<endl;
if(a==b)
cout<<"a==b"<<endl;
return 0;
}
我做了标记的那行重载"<",num和den是私有的成员,r.den,r.num是怎么在重载操作中直接调用的??