五 问题1 答:不能将插入运算符和抽取运算符定义为类的成员函数。 因为这两个运算符对第一个运算数有特殊的要求,即必须分别是 ostream和 Istream类的 对象,而不能是用户自己定义的其它类,而类的成员函数默认的第一个参数为指向该类对象 的指针类型,所以不符合插入和抽取运算符的要求。 问题 重载的运算符的实现如下 SmallInt &SmallInt: operator+=(const SmallInt &si) SmallInt tmp(val+si. val) val=tmp. val return *this 或 SmalliNt &smallInt: operator+=(const SmallInt &si) val+=si. val if(val>127) if(val<-128 val=256 eturn *this. 中央广播电视大学20002001学年度第一学期“开放教育(本科)”期末考试 (开)五、 问题 1: 答:不能将插入运算符和抽取运算符定义为类的成员函数。 因为这两个运算符对第一个运算数有特殊的要求,即必须分别是 ostream 和 istream 类的 对象,而不能是用户自己定义的其它类,而类的成员函数默认的第一个参数为指向该类对象 的指针类型,所以不符合插入和抽取运算符的要求。 问题 2: 重载的运算符的实现如下: SmallInt &SmallInt::operator+=(const SmallInt &si) { SmallInt tmp(val+si.val); val=tmp.val; return *this; } 或 SmallInt &SmallInt::operator+=(const SmallInt &si) { val+=si.val; if(val>127) val-=256; if(val<-128 val=256; return *this; } 中央广播电视大学 2000-2001 学年度第一学期“开放教育(本科)”期末考试 (开)