实验十实验报告.doc实验十实验报告
姜志达
实验目的
掌握运算符重载的定义及实现。
(2 )掌握具有运算符重载的应用。
实验设备
硬件环境:微型计算机
软件环境:
操作系统:Windows
语言环境:Visual C++
预习要求
学习教材有关运算符重载的内容,对基本运算符重载及特殊运算符重载有充分的理解。 对实验基木要求应在上机实验前仔细阅读,程序应事先编制完成,上机时录入调试,同时还 应设计相应的测试用例集,检查稈序的正确性、可靠性、完备性和容错能力。
实验内容
(1)将一个16位二进制数表示成0和1的字符序列,即用一个字符数组来存放这个二 进制数。在这个类屮设置两个构造函数,一个是传递報数参数的,另一个是传递字符串参数 的。因为用户在创建对象时传递的二进制数,可能是以整数形式给出,也可能是以数字串形 式给出,系统应该都能接受。另外有一个类型转换函数int(),用来将类类型向整型转换。稈 序屮的两个重载运算符“ + ”,“・”,用來完成两个二进制数Z间的加减运算。
#include "iostream, h"
#include z,string. h"
#include ""
class binary { //定义二进制类
char bits[16]; 〃二进制字模数组
public:
binary (char *) ; //字符串参数构造函数
binary(int); 〃整型参数构造函数
frie nd binary operator + (binary, bin ary); //重载"+ ”
friend bin ary opera tor -(binary, binary); //重载 "一”
operator int () ; //类类型转换函数
void print ();
};
binary::binary(char *num)
{
int isrc=strlen(num)-l; //字符串长度T为最低位
int idest=15;
while(isrc>=0 && idest>=0)
bits[idest--] = (num[isrc--]二二'O'?'O' 1') ; // 逐位赋值
while(idest>=0) bits[idest--]二'0‘; // 空高位值 0
}
binary::binary(int num)
{
for(int i=15; i>=0;i--)
{ bits[i] = ( (1) ) : //求余数
num»=l; //移位,相当于桀除2
}
}
binary operator +(binary nl, binary n2)
{ "
unsigned carry二0;
unsigned value;
binary res="0";
for(int i=15; i>=0; i--)
{
value=(nl. bits[i]二二'O' ?0:1) + ( (2) )+carry;
res. bits[i]二(value%2二二0?' O' :' 1');
carry=value»l;
}
return res;
}
binary operator -(binary nl, binary n2)
{
unsigned borrow二0;
int value;
binary res二"0";
for(int i=15; i>=0; i—)
{
value=(nl. bits[i]二二'O' ?0: l)-(n2. bits[i]二二'O' ?0: l)+borrow; res. bits[i] = (value==-l | value=l?' 1' :' O');
borrow=(value~-l | | borrow!=0&&(value~01 | value~l)?l:0);
return res;
binary::operator inl()
{
unsigncd value=0;
for(int i=0; i<=15; i++)
value= ( (3) ) + (bits[i] ==,0* ?0:1);
return value;
}
void binary::print()
{
char str[17];
strnepy (str, bits, 16); str[16]=,\0* ;
cout«str«z,\n/z;
}
main()
{
binary nl=〃1011〃;
binary n2二int(nl)+15; binary n3=nl-binary(7);
nl. print ();
n2. prin
实验十实验报告 来自淘豆网m.daumloan.com转载请标明出处.