7、由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“7”。
知识模块七
模版,重载
一、填空题
(1)定义重载函数时,应在_______上有所不同。
(2)在一个类中至少可以对一个_______进行2种重载。(3)在一个类中可以对一个操作符进行________重载。
二、程序填空
(1)根据注释在空白处填写适当内容。# include cla Location{ private: int X,Y;public: void init(int initX,int initY);int GetX();int GetY();};void Location::init(int initX,int initY){ X=initX;Y=initY;} int Location::GetX(){ reutrn X;} int Location::GetY(){ reutrn Y;} void main(){ Location A1;A1.init(20,90);// 定义一个指向 A1 的引用 rA1 // 用 rA1 在屏幕上输出对象 A1 的数据成员 X 和 Y 的值 }(2)下面程序的运行结果如下所示完成填空。#include “iostream.h” cla test{ private∶int num float fl;public∶ test();int getint(){return num;} float getfloat(){return fl;} ~test();};test∶∶test(){cout
Initializing default _____________________;∥填写结果 0 0 Desdtructor is active Desdtructor is active(3)定义一个日期的类来实现重载操作符的测试,在下面程序的底画线处填上适当的字句,完成类中成员函数的定义。#include cla ClaDate{ private∶ int year;int month;int day;public∶ClaDate(int y=0,int d=0,int m=0){year=y,month=m,day=d;} int getyear(){return year;} int getmonth(){return month;} in getday(){return day;} ____________________(iostream & s,ClaDate &a){ int y,m,d;cout>y>>m>>d;while(y>9999‖m>-1‖m-1‖d>y>>m>>d;} a.year=y;a.month=-m;a.day=-d;return s;} _____________________∥输出重定义 {∥输出日期
s cla A{ public∶ void f(int i){cout int f(int *x){if(!(*x)){ cout
#include cla A {public: A(){} ______________{cout
三、程序阅读题
1.分析以下程序执行结果
#include int add(int x,int y){ return x+y;} double add(double x,double y){ return x+y;} void main(){ int a=4,b=6;double c=2.6,d=7.4;cout cla Sample { int i;double d;public: void setdata(int n){i=n;} void setdata(double x){d=x;} void disp(){ cout cla Sample { int n;public: Sample(){} Sample(int i){n=i;} Sample &operator =(Sample);void disp(){cout int add(int x,int y){ return x+y;} int add(int x,int y,int z){ return x+y+z;} void main(){ int a=4,b=6,c=10;cout
#include cla Sample { int i;double d;public: void setdata(int n){i=n;d=0;} void setdata(int n,double x){ i=n;d=x;} void disp(){ cout cla Sample { int n;public: Sample(){} Sample(int i){n=i;} friend Sample operator-(Sample &,Sample &);friend Sample operator+(Sample &,Sample &);void disp(){cout cla Sample { int A[10][10];public: int &operator()(int,int);};int &Sample::operator()(int x,int y){ return A[x][y];} void main(){ Sample a;int i,j;for(i=0;i cla Sample { int n;public: Sample(int i){n=i;} operator++(){n++;} // 前缀重载运算符 operator++(int){n+=2;} // 后缀重载运算符 void disp(){ cout template T max(T x,T y){ return(x>y?x:y);} void main(){ cout template cla Sample { T n;public: Sample(T i){n=i;} void operator++();void disp(){cout void Sample::operator++(){ n+=1;// 不能用n++;因为double型不能用++ } void main(){ Sample s('a');s++;s.disp();} 11.分析以下程序的执行结果 #include template cla Sample { T n;public: Sample(){} Sample(T i){n=i;} Sample&operator+(consta Sample&);void disp(){cout Sample&Sample::operator+(const Sample&s){ static Sample temp;temp.n=n+s.n;return temp;} void main(){ Samples1(10),s2(20),s3;s3=s1+s2;s3.disp();}
四、改错题
(1)下列的类声明程序片段是否有语法错误,如有请该正 : cla FIGURE { PUBLIC: figure();FIGURE();~FIGURE(int have_drawed);};(2)设有如下的程序片段,是否有错误,如有错误请该正 cla PRINTER { unsigned char flag;int print_page()(...);public: PR INTER(unsigned char fig){...};int print_file(){...};};int main(){ PRINTER LQ_1600K(0x3F8, ' ');LQ-1600K.print-page 0;}(3)下面的程序有一处错误,请用下横线标出错误所在行并给出修改意见。#include //1 //2 cla shape { //3 public: //4 int area(){return 0;} //5 };//6 //7 cla rectangle: public shape { //8 public: //9 int a, b;//10 void setLength(int x, int y){a=x;b=y;} //11 int area(){return a*b;} //12 };//13 //14 void main(){ //15 rectangle r;//16 r.setLength(3,5);//17 shape*s=r;//18 cout //1 cla CU { //2 enum {INT, FLOAT} type;//3 union value { //4 int ivalue;//5 float fvalue;//6 };//7 public: //8 CU(int x): type(INT), ivalue(x){} //9 CU(float y): type(FLOAT), fvalue(y){} //10 Void print(){ //11 if(type ==INT)//12 cout void main(){ ofstream outf(“ D:tem.dat ” ,ios::trunc);outf>k;count cla Test{ public;static int x;};int x=20;// 对类成员初始化 void main(){ cout # include cla A{ public:A(const char *nm){strcpy(name,nm);} private:char name[80];};cla B:public A{ public:B(const char *nm):A(nm){ } void PrintName()const;};void B::PrintName()const{ cout cla Location{ private: int X,Y;public;void init(int initX,int initY);int sumXY();};void Location::init(int initX,int initY){ X=initX;Y=initY;} int Location::sumXY(){ return X+Y;} void main(){ Location A1;int x,y;A1.init(5,3);x=A1.X;y=A1.Y;cout template T gcd(Tx,Ty){ while(x!=y)if(x>y)x-=y;else y-=x;return x;} void main(){ int a;double d;cin>>a>>d;cout cla ConstFun{ public: void ConstFun(){} const int f5()const{return 5;} int Obj(){return 45;} int val;int f8();};int ConstFun::f8(){return val;} void main(){ const ConstFun s;int i=s.f5();cout cla A{ public:void fun(){cout
五、按题目要求编程
(1.设计一个点类Point,实现点对象之间的各种运算。
2.设计一个日期类Date,包括年、月、日等私有数据成员。要求实现日期的基本运算,如一日期加上天数、一日期减去天数、两日期相差的天数等。
3设计一个三角形类Triangle,包含三角形三条边长的私有数据成员,另有一个重载运算符“+”,以实现求两个三角形对象的面积之和。
4.设计一个学生类student,包括姓名和三门课程成绩,利用重载运算符”+“将所有学生的成绩相加放在一个对象中,再对该对象求各门课程的平均分。
4.编写一个对具有n 个元素的数组x[]求最大值的程序,要求将求最大值的函数设计成函数模板 5编写一个函数模板,它返回两个值中的较小者,同时要求能正确处理字符串
6设计一个数组类模板Array,其中包含重载下标运算符函数,并由此产生模板类Array和Array,使用一些测试数据对其进行测试。
7.编写一个使用类模板对数组进行排序、查找和求元素和的程序