77范文网 - 专业文章范例文档资料分享平台

面向对象程序设计课后习题答案(8)

来源:网络收集 时间:2019-01-07 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

#include #include

const int row=2; const int col=3; class array { public: array()

{ int i,j,k=1; for(i=0;i

for(j=0;j

void get_array()//由键盘输入数组的值 { int i,j;

cout<<\ for(i=0;i

for(j=0;j

cin>>var[i][j]; }

void display()//显示数组的值 { int i,j;

for(i=0;i

{ for(j=0;j

cout<

friend array operator+(array X,array Y);//将2个数组相加 friend array operator-(array X,array Y);//将2个数组相减 private:

int var[row][col]; };

array operator+(array X,array Y)//将2个数组相加 { array temp; int i,j;

for(i=0;i

temp.var[i][j]=Y.var[i][j]+X.var[i][j]; return temp; }

array operator-(array X,array Y)//将2个数组相减 { array temp; int i,j;

for(i=0;i

temp.var[i][j]=Y.var[i][j]-X.var[i][j]; return temp; }

void main() { array X,Y,Z; Y.get_array();

cout<<\ X.display();

cout<<\ Y.display(); Z=X+Y;

cout<<\ Z.display(); Z=X-Y;

cout<<\ Z.display(); }

[7_10]为Date类重载“+”运算符,实现在某一日期上(月日年)加一个天数 #include class Date { public: Date()

{ }

Date(int m,int d,int y) { month=m; day=d; year=y; }

void print()

{ cout<

int month,day,year; };

static int days[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},\\ {31,29,31,30,31,30,31,31,30,31,30,31}}; int isleap(int year)

{ if((year%4==0&&year0!=0)||(year@0==0)) return 1; else

return 0; }

Date Date::operator +(int n) { int leap,y; leap=0;

leap=isleap(this->year); n+=this->day;

while(n>days[leap][this->month-1]) { n-=days[leap][this->month-1]; if(++(this->month)==13) { this-&g ; month=1; (this->year)++;

leap=isleap(this->year); } }

this->day=n; return *this; }

void main()

{ Date d1(2,15,2000),d2; d1.print(); d2=d1+95; d2.print(); }

第八章:模板

[8_1]为什么使用摸板?函数摸板声明的一般形式是什么?

摸板是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码重用。使用摸板可以大幅度地提高程序设计的效率。函数摸板的一般说明形式如下:

template 返回类型 函数名(摸板形参表) {

函数体 }

其中,template是一个声明摸板的关键字,它表示声明一个摸板。类型参数前需要加关键字class(或typename).

[8_2]什么是摸板实参和摸板函数?

将函数摸板中实例化的参数称为摸板实参,用摸板实参实例化的函数称为摸板函数。 [8_3]为什么使用类摸板,类摸板和摸板类之间的关系是什么? 类摸板允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数或返回值能取任意数据类型。

类摸板不是代表一个具体的、实际的类,而是代表着一类类。摸板类是类摸板对某一特定类型的实例,表示某一具体的类。

[8_4]函数模板与同名的非模板函数重载时,调用的顺序是怎样的? (1)寻找一个参数完全匹配的函数,如果找到了就调用它。

(2)寻找一个函数模板,将其实例化,产生一个匹配的模板函数,若找到了,就调用它。 (3)若(1)和(2)都失败了,再试一试低一级的对函数的重载方法,例如通过类型转换可产生参数匹配等,若找到了,就调用它。 若(1)(2)(3)均未找到匹配的函数,则是一个错误的调用。如果在第(1)步有多于一个的选择,那么这个调用是意义不明确的,是一个错误调用。 [8_5] D 说明:实例化的摸板实参之间必须保持一致的类型 [8_6] A

[8_7] 运行结果:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,i out of range

说明:Holder类的大小是20,所以输出下标为21的元素会输出i out of range [8_8] 运行结果为:10 0.23 X This is a test

说明:程序声明了两种类型的对象。ob1的两个参数分别为整形与双精度型,ob2的两个参数分别为字符型与字符串型。

[8_9] 解:主函数中语句”Stack aSt(5);”是错误的,因为首先要将模板实例化,才能由模板生成对象。应该将此语句改为”StackaSt(5);” [8_10]解:#include template

Type min(Type a,Type b,Type c) { a=(a

[8_11]解:执行语句:

cout<

时出现错误。出错的原因是,函模板中的参数类型只有到该函数真正被调用时才能决定。在调用时,编译器将按最先遇到的实参的类型隐含地生成一个模板函数,用它对所有模板进行一致性检查。例如对语句:max(f,i);

编译器将先按变量f将Type解释为double类型,此后出现的模板实参i不能解释为double类型时,便发生错误,在此没有隐含的类型转换的功能。 如果想让运行结果为:10.56 10.56 主程序应修改为: void main() { int i=10; double f=10.56; cout<

cout<

[8_12]程序实现如下: #include template

Type max(Type *Array,int size) { int i,j=0;

for(i=1;i

if(Array[i]>Array[j]) { j=i; } return Array[j]; }

void main()

{ int intArray[]={11,12,13,14,7,8,9};

double dArray[]={11.2,12.3,13.2,14.5,14.8,8.7,9.3}; cout<

[8_13]程序实现如下: #include template

void sort(Type *Array,int size) { int i,j;

for(i=0;i

for(j=0;j

if(Array[j]>Array[j+1]) { Type temp=Array[j]; Array[j]=Array[j+1]; Array[j+1]=temp; } }

void main()

{ int intArray[]={11,12,13,14,7,8,9}; int i;

sort(intArray,7); cout<

cout<

[8_14]程序实现如下: #include template class input { public:

input(char *s,X min,X max); private:

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库面向对象程序设计课后习题答案(8)在线全文阅读。

面向对象程序设计课后习题答案(8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/409174.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: