- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
运算符重载、继承、派生程序题及答案
1. ? (10分)
栈类——类模板
题目描述
用类模板方式设计一个链栈类stackT,其中有两个私有数据成员:NodeT *head(链首指针,即栈顶元素指针),int num(栈里结点数)以及3个公有成员函数:push(元素入栈)、pop(元素出栈)和stackempty(判断栈是否为空),并建立一个整数栈和一个字符栈。template class Tclass stack{};注意:为了能够生成结点类型不同的链式栈,结点类的设计也需要用类模板。templateclass Tclass Node{};
?
输入描述
输入整数栈的数据元素和字符栈的数据元素
?
输出描述
输出整数栈的数据元素出栈序列和字符栈的数据元素出栈序列
?
输入样例
4 8 3 2
a d b c
?
输出样例
2 3 8 4
c b d a
?#includeiostream
using namespace std;
template class T
class stack
{
template class T1
class Node
{
T1 a ;
NodeT1 *next ;
public:
Node(T1 x):a(x)
{}
void show()
{
cout a endl ;
}
friend class stackT1 ;
};
NodeT *head ;
int num ;
public:
stack()
{
num = 0 ;
head = NULL ;
}
void push(T x)
{
NodeT *p = new NodeT(x) ;
p-next = head ;
head = p ;
num++ ;
}
T pop()
{
NodeT *p = head ;
head = head-next ;
T t = p-a ;
delete p ;
num-- ;
return t ;
}
bool stackempty()
{
if( head == NULL )
return true;
else
return false;
}
};
int main()
{
stackint a ;
stackchar b ;
int x ;
char y ;
for(int i = 0 ; i 4 ; i ++ )
{
cin x ;
a.push(x) ;
}
for( int i = 0 ; i 4 ; i ++ )
{
cin y ;
b.push(y);
}
for( int i = 3 ; i = 0 ; i -- )
{
a.stackempty() ;
cout a.pop() ;
}
cout endl ;
for( int i = 3 ; i = 0 ; i -- )
{
b.stackempty();
cout b.pop() ;
}
cout endl ;
return 0 ;
}
2. ? (10分)
二进制类(1)——运算符重载
题目描述
将一个16位二进制数表示成0和1的字符序列,即用一个字符数组来存放这个二进制数。在这个类中设置两个构造函数,一个是传递整数参数的,另一个是传递字符串参数的。因为用户在创建对象时传递的二进制数,可能是以整数形式给出,也可能是以数字串形式给出,系统应该都能接受。另外有一个类型转换函数int(),用来将类类型向整型转换。两个重载运算符“+”,“-”,用来完成两个二进制数之间的加减运算。class binary { //定义二进制类char bits[16]; //二进制字模数组public:binary(char *); //字符串参数构造函数binary(int); //整型参数构造函数friend binary operator +(binary,binary); //重载“+”friend binary operator -(binary,binary); //重载“-”operator int(); //类类型转换函数void print();};主函数设计如下:int main(){binary n1=1011;binary n2=int(n1)+15;binary n3=n1-binary(7);n1.print();n2.print();n3.print();coutint(n2)+5endl;coutn2-bina
文档评论(0)