- 1、本文档共47页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
复习-第2章-2精要
class实现长整数--长整数类型 class LongInt { public: DuLink L; LongInt(); //构造一个长整数 LongInt ( const LongInt a); ~LongInt(); //销毁长整数 bool IsEmpty(); //判断线性表是否空 void Clear(); //清空线性表的元素 void InsertHead(int e); //在线性表表头插入数据元素e void InsertTail(int e); //在线性表表尾插入数据元素e void DeleteHead(); //在线性表表头删除数据元素e void Show(); //显示长整数 class实现长整数--长整数类型 class LongInt { //利用输入字符串创建长整数 //如 -123456 变成 -, 12, 3456, //再存储到长整数数据类型中 bool Create (char *exp); LongInt operator= ( const LongInt a ); LongInt operator+ ( const LongInt a ) const; LongInt operator- ( const LongInt a ) const; }; class实现长整数--拷贝构造函数 LongInt:: LongInt (const LongInt a) { L = new DuLNode; if(!L) return; L-data = a.L-data; L-next = L; L-prior = L; DuLink p; p = a.L-next; while(p!=a.L) { InsertTail(p-data); p = p-next; } } 拷贝构造函数 在C++中,下面三种对象需要调用拷贝构造函数: 一个对象作为函数参数,以值传递的方式传入函数体; 一个对象作为函数返回值,以值传递的方式从函数返回; 一个对象用于给另外一个对象进行初始化; 隐式的拷贝构造函数: 如果在类中没有显式的声明一个拷贝构造函数,那么,编译器会自动生成一个来进行对象之间成员的位拷贝(Bitwise Copy) 包含动态分配成员的类除提供拷贝构造函数外,还应该考虑重载=赋值操作符号 class实现长整数– 重载= LongInt LongInt::operator= ( const LongInt a) { Clear(); L-data = a.L-data; L-next = L; L-prior = L; DuLink p; p = a.L-next; while(p!=a.L) { InsertTail(p-data); p = p-next; } } class实现长整数– 重载+ LongInt LongInt:: operator+ ( const LongInt a) const { LongInt c; DuLink pa, pb, pc; //指向a, this, result结点的指针 int sign_a, sign_b; //长整数a, this 的符号标志 int sign; //相加结果符号标志 int sum; //结点相加中间变量 //从低位开始相加 pa = a.L-prior; pb = L-prior; sign_a = a.L-data; sign_b = L-data; class实现长整数– 重载+ //处理a, b中相同位阶的数 while(pa != a.L pb != L) { sum = pa-data*sign_a + pb-data*sign_b; c.InsertHead(sum); pa = pa-prior; pb = pb-prior; } class实现长整数– 重载+ while(pa != a.L) //a 的位数比 b 多,处理a的剩余位 { sum = pa-data*sign_a; c.InsertHead(sum); pa = pa-prior; } while(pb != L) //b 的位数比 a 多,处理b的剩余位 { sum = pb-data*sign_b; c.InsertHead(sum); pb = pb-prior; } cla
文档评论(0)