C++给学生习题第7章练习题(2)

2019-09-01 19:23

str=new char[size+1]; strcpy_s(str,size+1,m); }

//(8)定义析构函数 String::~String() { delete [] str; size=0; }

//(9)定义运算符<<重载函数

ostream&operator<<(ostream&output,String&s) { output<

//(10)定义运算符>>重载函数

istream&operator>>(istream&input,String&s) { char temp[1000]; input>>temp; delete [] s.str; s.size=strlen(temp); s.str=new char[s.size+1]; strcpy_s(s.str,s.size+1,temp); return input; }

//(11)定义int类型转换函数 String::operator int()const { return size; }

//(12)定义char*类型转换函数 String::operator char* () const { static char temp[1000]; strcpy_s(temp,\ strcat_s(temp,str); strcat_s(temp,\ return temp; }

int main() { char s[100]; String s1,s2; //(13)调用构造函数 cout<<\ cin>>s1>>s2; /(14)/调用operator>>函数 cout<<\ cout<<\//(15)调用operator<<函数 cout<<\//(16)调用operator int类型转换函数 cout<<\//(17)调用operator char*类型转换函数 cout<<\//(18)调用operator char*类型转换函数 strcpy(s,s2); //(19)对参数s2调用类型转换函数operator char*,然后调用库函数 cout<<\//(20)调用库函数输出串 return 0; //(21)调用析构函数 }

综合练习

一、思考题

1.一个运算符重载函数被定义为成员函数或友元函数后,在定义方式、解释方式和调用方式上有何区别?可能会出现什么问题?请用一个实例说明之。 【解答】

以二元运算符为例。 运算符重载 成员函数 Obj& operator op(); Obj operator op(object); Obj.operatorop() ObjL.operator op(ObjR) Obj op 或opObj ObjLopObjR 左操作数通过this指针指定,右操作数由参数传递 友员函数 friend Obj& operator op(Obj&); friend Obj operator op(Obj,Obj); operator op(Obj) operator op(ObjL,ObjR) Objop或 opObj ObjLopObjR 操作数均由参数传递 定义 解释 调用 可能会出现的问题:

(1)运算符的左右操作数不同,须用友员函数重载;

(2)当运算符的操作需要修改类对象状态时,应用成员函数重载。 (3)友员函数不能重载运算符 = () [] -> 必须要用友员函数重载的运算符>><< 程序略。

2.类类型对象之间、类类型和基本类型对象之间用什么函数进行类型转换?归纳进行类型转换的构造函数和类型转换函数的定义形式、调用形式和调用时机。 【解答】

构造函数可以把基本类型、类类型数据转换成类类型数据;类类型转换函数可以在类类型和基本数据类型之间做数据转换。 构造函数 类类型转换函数 定义形式 ClassX::ClassX(arg,arg1=E1,...,argn=En); ClassX::operator Type(); 调用形式 隐式调用 用类型符显式调用; 自动类型转换时隐式调用 调用时机 建立对象、参数传递时 需要做数据类型转换时


C++给学生习题第7章练习题(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浙江专升本各类别所含专业对照表2014版 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: