欢迎来到天天文库
浏览记录
ID:37389608
大小:108.50 KB
页数:14页
时间:2019-05-23
《《c++程序设计》上机指导2》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《C++程序设计》上机指导2实验四、面向对象的妥协(2学时)一、实验目的1.掌握友元的概念、友元函数的定义与使用方法。2.掌握静态数据成员与静态成员函数的定义与使用方法。二、实验内容1.设计并测试点类Point,其数据成员是直角坐标系的点坐标,友元函数distance用来计算两点间的距离。2.设计一个书类Book,能够保存书名、定价,所有书的本数和总价。实验五、运算符重载(2学时)一、实验目的1.掌握运算符重载的规则。2.掌握几种常用的运算符重载的方法。3.了解转换构造函数的使用方法。4.了解在VisualC++6.0环境下进行运算符重载要注意的问题。二、实验内容1.
2、阅读下面的程序,写出程序运行的结果。(1)#includeclassABC{inta,b,c;public:ABC(intx,inty,intz):a(x),b(y),c(z){}friendostream&operator<<(ostream&out,ABC&f);};ostream&operator<<(ostream&out,ABC&f){out<<"a="<3、j;return0;}(2)#includeclassNumber{intn;public:Number(intx):n(x){}Number&operator++(){++n;return*this;}Number&operator++(int){n++;return*this;}friendNumber&operator--(Number&o);friendNumber&operator--(Numbero,int);voiddisplay(){cout<<"ThisNumberis:"<4、r--(Number&o){--o.n;returno;}Number&operator--(Numbero,int){o.n--;returno;}intmain(){NumberN1(10);++++++N1;N1.display();N1++;N1.display();--N1;N1.display();N1------;N1.display();return0;}2.设计并实现一个日期类Date,要求:(1)可以建立具有指定日期(年、月、日)的Date对象,默认日期是2009.1.1。(2)可以从输出流输出一个格式为“年-月-日”的日期,其中年是四位数据,月、5、日可以是一位也可以是两位数据。(3)可以动态地设置年、月、日。(4)可以用运算符==、!=、<和>对两个日期进行比较。(5)可以用运算符++、--、+=、-=等完成天数的加减一天或若干天的操作(6)Date类必须能够正确表达日期,不会出现类似于13月,32日一类的情况。Date类还必须处理闰年的问题,闰年包括:所有能被400整除的年份,以及能被4整除同时又不能被100整除的年份。(7)写出主函数对该类进行测试。3.下面是一个数组类CArray的定义。要求:(1)在此基础上增加print()成员函数打印数组,(2)重载“=”、“+”、“-”运算符使之能对该数组类对象进行6、赋值、加减运算。(3)写出主函数对该类进行测试。classCArray{private:int*p_arr;intsize;public:CArray();//缺省构造函数CArray(int*p_a,ints);//构造函数CArray(constCArray&r_other);//复制构造函数~CArray();//析构函数intoperator[](intpos)const;//访问数组元素值的下标运算符重载函数int&operator[](intpos);//设置数组元素值的下标运算符重载函数Carray&operator=(constCarray&other7、)//赋值运算符“=”重载函数Carray&operator+(constCarray&other)//加运算符“=”重载函数Carray&operator-(constCarray&other)//减运算符“=”重载函数voidprint()const;};CArray::CArray(){p_arr=NULL;size=0;}CArray::CArray(int*p_a,ints){if(s>0){size=s;p_arr=newint[size];for(inti=0;i
3、j;return0;}(2)#includeclassNumber{intn;public:Number(intx):n(x){}Number&operator++(){++n;return*this;}Number&operator++(int){n++;return*this;}friendNumber&operator--(Number&o);friendNumber&operator--(Numbero,int);voiddisplay(){cout<<"ThisNumberis:"<4、r--(Number&o){--o.n;returno;}Number&operator--(Numbero,int){o.n--;returno;}intmain(){NumberN1(10);++++++N1;N1.display();N1++;N1.display();--N1;N1.display();N1------;N1.display();return0;}2.设计并实现一个日期类Date,要求:(1)可以建立具有指定日期(年、月、日)的Date对象,默认日期是2009.1.1。(2)可以从输出流输出一个格式为“年-月-日”的日期,其中年是四位数据,月、5、日可以是一位也可以是两位数据。(3)可以动态地设置年、月、日。(4)可以用运算符==、!=、<和>对两个日期进行比较。(5)可以用运算符++、--、+=、-=等完成天数的加减一天或若干天的操作(6)Date类必须能够正确表达日期,不会出现类似于13月,32日一类的情况。Date类还必须处理闰年的问题,闰年包括:所有能被400整除的年份,以及能被4整除同时又不能被100整除的年份。(7)写出主函数对该类进行测试。3.下面是一个数组类CArray的定义。要求:(1)在此基础上增加print()成员函数打印数组,(2)重载“=”、“+”、“-”运算符使之能对该数组类对象进行6、赋值、加减运算。(3)写出主函数对该类进行测试。classCArray{private:int*p_arr;intsize;public:CArray();//缺省构造函数CArray(int*p_a,ints);//构造函数CArray(constCArray&r_other);//复制构造函数~CArray();//析构函数intoperator[](intpos)const;//访问数组元素值的下标运算符重载函数int&operator[](intpos);//设置数组元素值的下标运算符重载函数Carray&operator=(constCarray&other7、)//赋值运算符“=”重载函数Carray&operator+(constCarray&other)//加运算符“=”重载函数Carray&operator-(constCarray&other)//减运算符“=”重载函数voidprint()const;};CArray::CArray(){p_arr=NULL;size=0;}CArray::CArray(int*p_a,ints){if(s>0){size=s;p_arr=newint[size];for(inti=0;i
4、r--(Number&o){--o.n;returno;}Number&operator--(Numbero,int){o.n--;returno;}intmain(){NumberN1(10);++++++N1;N1.display();N1++;N1.display();--N1;N1.display();N1------;N1.display();return0;}2.设计并实现一个日期类Date,要求:(1)可以建立具有指定日期(年、月、日)的Date对象,默认日期是2009.1.1。(2)可以从输出流输出一个格式为“年-月-日”的日期,其中年是四位数据,月、
5、日可以是一位也可以是两位数据。(3)可以动态地设置年、月、日。(4)可以用运算符==、!=、<和>对两个日期进行比较。(5)可以用运算符++、--、+=、-=等完成天数的加减一天或若干天的操作(6)Date类必须能够正确表达日期,不会出现类似于13月,32日一类的情况。Date类还必须处理闰年的问题,闰年包括:所有能被400整除的年份,以及能被4整除同时又不能被100整除的年份。(7)写出主函数对该类进行测试。3.下面是一个数组类CArray的定义。要求:(1)在此基础上增加print()成员函数打印数组,(2)重载“=”、“+”、“-”运算符使之能对该数组类对象进行
6、赋值、加减运算。(3)写出主函数对该类进行测试。classCArray{private:int*p_arr;intsize;public:CArray();//缺省构造函数CArray(int*p_a,ints);//构造函数CArray(constCArray&r_other);//复制构造函数~CArray();//析构函数intoperator[](intpos)const;//访问数组元素值的下标运算符重载函数int&operator[](intpos);//设置数组元素值的下标运算符重载函数Carray&operator=(constCarray&other
7、)//赋值运算符“=”重载函数Carray&operator+(constCarray&other)//加运算符“=”重载函数Carray&operator-(constCarray&other)//减运算符“=”重载函数voidprint()const;};CArray::CArray(){p_arr=NULL;size=0;}CArray::CArray(int*p_a,ints){if(s>0){size=s;p_arr=newint[size];for(inti=0;i
此文档下载收益归作者所有