如何实现等号的重载?

来源:百度知道 编辑:UC知道 时间:2024/06/06 18:40:14
用等号重载实现分数类总体赋值

class zrf_Ratio
{
private:
int fz,fm;
public:
zrf_Ratio();
zrf_Ratio(int a,int b){fz=a;fm=b;}
zrf_Ratio& operator=(const zrf_Ratio& );
};

zrf_Ratio::zrf_Ratio& operator=(const zrf_Ratio& fs)
{
return(fs.fz,fs.fm);
}

int main()
{
zrf_Ratio zrf(1,7),zl;
zl=zrf;
}

最后他说:
E:\2009春\c++\program\homework7\job3.cpp(36) : error C2143: syntax error : missing ';' before '&'
E:\2009春\c++\program\homework7\job3.cpp(36) : error C2350: 'zrf_Ratio::zrf_Ratio::zrf_Ratio' is not a static member
E:\2009春\c++\program\homework7\job3.cpp(37) : error C2501: '=' : missing storage-class or type specifiers
E:\2009春\c++\program\homework7\job3.cpp(37) : error C2801: 'operator =' must be a <Unknown> member
E:\2009春&

改成这样,返回的值不是该类中的值,这个对应的重载函数是该类中的,所以作用域解析符应该是zrf_Ratio::operator=
而不能在返回值前面加作用域
zrf_Ratio& zrf_Ratio::operator=(const zrf_Ratio& fs)
{
return(fs.fz,fs.fm);
}