收藏 分销(赏)

实验五运算符重载.doc

上传人:xrp****65 文档编号:6397455 上传时间:2024-12-07 格式:DOC 页数:4 大小:39KB 下载积分:10 金币
下载 相关 举报
实验五运算符重载.doc_第1页
第1页 / 共4页
实验五运算符重载.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
实验六 运算符重载(2学时) 一、实验目的 1.掌握运算符重载的规则。 2.掌握用成员函数、友元函数重载运算符的特点。 3.掌握几种常用的运算符重载的方法。 二、实验内容 1.阅读下面的程序,写出程序运行的结果。 (1) #include<iostream.h> class ABC{ int a,b,c; public: ABC(int x,int y,int z):a(x),b(y),c(z){} friend ostream &operator<<(ostream &out,ABC& f); }; ostream &operator<<(ostream &out,ABC& f) { out<<"a="<<f.a<<endl<<"b="<<f.b<<endl<<"c="<<f.c<<endl; return out; } int main(){ ABC obj(10,20,30); cout<<obj; return 0; } (2) 写出运行结果。将成员函数重载形式改为友元函数重载形式,友元函数重载形式改为成员函数重载形式 #include<iostream.h> class Number{ int n; public: Number(int x):n(x){} Number& operator++(){ ++n; return *this; } Number& operator++(int){ n++; return *this;} friend Number &operator--(Number &o); friend Number &operator--(Number o,int); void display(){cout<<"This Number is: "<<n<<endl;} }; Number &operator--(Number &o){--o.n; return o; } Number &operator--(Number o,int){o.n--; return o; } int main(){ Number N1(10); ++ ++ ++N1; N1.display(); N1++; N1.display(); --N1; N1.display(); N1-- -- --; N1.display(); return 0; } 2.设计并实现一个日期类Date,要求: (1)可以建立具有指定日期(年、月、日)的Date对象,默认日期是2009.1.1。 (2)可以从输出流输出一个格式为“年-月-日”的日期,其中年是四位数据,月、日可以是一位也可以是两位数据。 (3)可以动态地设置年、月、日。 (4)可以用运算符= =、!=、<和>对两个日期进行比较(定义其中之一即可)。 (5)可以用运算符++、--、+=、-=等完成天数的加减一天或若干天的操作(定义其中之一即可)。 (6)Date类必须能够正确表达日期,不会出现类似于13月,32日一类的情况。Date类还必须处理闰年的问题,闰年包括:所有能被400整除的年份,以及能被4整除同时又不能被100整除的年份。(选做) (7)写出主函数对该类进行测试。 下面两题选做一题 3.下面是一个数组类CArray的定义。要求: (1)在此基础上增加print()成员函数打印数组, (2)重载“=”、“+”、“-” 运算符使之能对该数组类对象进行赋值、加减运算。 (3)写出主函数对该类进行测试。 class CArray {private: int* p_arr; int size; public: CArray(); //缺省构造函数 CArray(int* p_a,int s); //构造函数 CArray(const CArray &r_other);//复制构造函数 ~CArray();//析构函数 int operator[](int pos) const; //访问数组元素值的下标运算符重载函数 int& operator[](int pos); //设置数组元素值的下标运算符重载函数 Carray &operator=(const Carray &other)//赋值运算符“=”重载函数 Carray &operator+(const Carray &other) //加运算符“+”重载函数 Carray &operator-(const Carray &other) //减运算符“-”重载函数 void print() const; }; CArray:: CArray() { p_arr=NULL; size=0;} CArray:: CArray(int* p_a,int s) { if(s>0) { size=s; p_arr=new int[size]; for(int i=0;i<size;i++) p_arr[i]=p_a[i]; } Else { p_arr=NULL; size=0; } } CArray::CArray(const CArray &r_other) { size=r_other.size; if(size) { p_arr=new int[size]; for(int i=0;i<size;i++) p_arr[i]=r_other.p_arr[i]; } } CArray::~CArray() { if(p_arr) delete[] p_arr; p_arr=NULL; size=0; } int CArray::operator[](int pos) const { if(pos>=size) return p_arr[size-1]; if(pos<0) return p_arr[0]; return p_arr[pos]; } int& CArray::operator[](int pos) { if(pos>=size) return p_arr[size-1]; if(pos<0) return p_arr[0]; return p_arr[pos]; } 4.下面是一个自定义字符串类的声明。请写出该类所有成员函数的类外定义代码。 class string {private: unsigned buflen; char * buffer; public: string();//构造函数 string(unsigned); string(char); string(const char*); string(const string &);//复制构造函数 ~string();//析构函数 //重载赋值运算符 string& operator=(const string &right); string& operator+=(const string &right); char *operator+=(const char *right); friend string operator+(const string & left,const string & right); //字符串连接 string operator()(unsigned start,unsigned len); //取子串 unsigned length()const; //求字符串长度 char & operator[](unsigned index)const; //访问单个字符 int compare(const string &)const; //字符串比较 operator const char *()const; //到普通c字符串的转换 friend ostream & operator<<(ostream &,string &);//字符串的输出 };
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服