下面的程序定义了一个简单的 SmallInt类,用来表示从-128到127之间的整数。类的唯 的数据成员val存放一个-128到127(包含-128和127这两个数)之间的整数,为了方 类 Smallint还重载了一些运算符。阅读 SmallInt的定义,回答题目后面的问题 class SmallInt( Smallint(int i=o) 重载插入和抽取运算符 friend ostream &operator<<(ostream&os, const SmallInt &si) friend istream &operator>>(istream &is, SmallInt &si) ∥重载算术运算符 SmallInt operator+(const Smallint &sifreturn SmallInt( val+si. val); j SmallInt operator-(const SmallInt &sifreturn SmallInt(val-si. val); SmallInt operator*(const SmallInt &si)return SmallInt(val *si. val); 3 SmallInt operator/(const SmallInt &si)return SmallInt( val/si. val); ∥重载比较运算符 en: Cool operator=( const SmallInt &si)(return(val=si. val), Smallint SmallInt(int 1) while(i>127) i-=256 while(i<-128) +=256 ostream &operato stream &os const smallInt &si os<<(int )si. val eturn os. istream &operator>>(istream &is, SmallInt &si) Int tmp, Is>>tmp, Si=SmallInt(tmp) return Is 问题1:(本小题4分)上面的类定义中,重载的插入运算符和抽取运算符被定义为类的友 元函数,能不能将这两个运算符定义为类的成员函数?如果能,写出函数原型,如果不能, 说明理由 问题2:(本小题5分)为类 SmallInt增加一个重载的运算符+=’,函数原型如下: class SmallInt( public SmallInt &operator +=(const SmallInt &si) ∥其它函数 private 该函数将返回对当前对象的引用。如:下面的程序定义了一个简单的 SmallInt 类,用来表示从-128 到 127 之间的整数。类的唯一 的数据成员 val 存放一个-128 到 127(包含-128 和 127 这两个数)之间的整数,为了方便, 类 SmallInt 还重载了一些运算符。阅读 SmallInt 的定义,回答题目后面的问题。 class SmallInt{ public: SmallInt(int i=0); //重载插入和抽取运算符 friend ostream &operator<<(ostream&os,const SmallInt &si); friend istream &operator>>(istream &is, SmallInt &si); //重载算术运算符 SmallInt operator+(const SmallInt &si){return SmallInt(val+si.val);} SmallInt operator-(const SmallInt &si){return SmallInt(val-si.val);} SmallInt operator*(const SmallInt &si){return SmallInt(val*si.val);} SmallInt operator/(const SmallInt &si){return SmallInt(val/si.val);} //重载比较运算符 bool operator==(const SmallInt &si){return (val==si.val);} private: char val; }; SmallInt::SmallInt(int i) { while(i>127) i-=256; while(i<-128) i+=256; val=i; } ostream &operator<<(ostream &os,const SmallInt &si) { os<<(int)si.val; return os; } istream &operator>>(istream &is,SmallInt &si) { int tmp; is>>tmp; si=SmallInt(tmp); return is; } 问题 1:(本小题 4 分)上面的类定义中,重载的插入运算符和抽取运算符被定义为类的友 元函数,能不能将这两个运算符定义为类的成员函数?如果能,写出函数原型,如果不能, 说明理由。 答: 问题 2:(本小题 5 分)为类 SmallInt 增加一个重载的运算符’+=’,函数原型如下: class SmallInt{ public: SmallInt &operator +=(const SmallInt &si); //其它函数…… private: char val; }; 该函数将返回对当前对象的引用。如: