- 注册时间
- 2008-8-4
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 1415
- 在线时间
- 小时
|
楼主 |
发表于 2008-8-28 23:27:05
|
显示全部楼层
1。应该怎样给出显式的拷贝声明??
我这样添加- #include <iostream.h>
- #include "D:/HugeCalc/HugeCalc.h" // 公共接口
- #include "D:/HugeCalc/HugeInt.h" // 10进制系统
- #include "D:/HugeCalc/HugeIntX.h" // 16进制系统
- #pragma message( "automatic link to D:/HugeCalc/HugeCalc.lib" )
- #pragma comment( lib, "D:/HugeCalc/HugeCalc.lib" )
- CHugeInt::CHugeInt( CONST CHugeInt& right ); // 显式拷贝声明
- int GetNumTail(const CHugeInt d)
- {
- return d % 10;
- }
- int main(int argc, char* argv[])
- {
- cout << HugeCalc::GetVer() << endl;
- CHugeInt a(1234);
-
- cout << endl << GetNumTail(a) << endl;
-
- system( "pause" );
- return 0;
- }
复制代码 编译后问题依旧
2。关于传引用更高效。我是想试一下 CHugeCalc 的拷贝构造函数。因为在一些复杂的计算中,传入的参数要参加计算,为了不改变原参数,需要拷贝一个备份,用备份参加计算。
不过 gxqcn 大虾给了我启发:- #include <iostream.h>
- #include "D:/HugeCalc/HugeCalc.h" // 公共接口
- #include "D:/HugeCalc/HugeInt.h" // 10进制系统
- #include "D:/HugeCalc/HugeIntX.h" // 16进制系统
- #pragma message( "automatic link to D:/HugeCalc/HugeCalc.lib" )
- #pragma comment( lib, "D:/HugeCalc/HugeCalc.lib" )
- //CHugeInt::CHugeInt( CONST CHugeInt& right );
- int GetNumDigitsSum(const CHugeInt& d)
- {
- CHugeInt t(d);
- int i = 0;
-
- while ( t > 0 )
- {
- i += t % 10;
- t /= 10;
- }
-
- return i;
- }
- int main(int argc, char* argv[])
- {
- cout << HugeCalc::GetVer() << endl;
-
- CHugeInt a(1234);
-
- a.Pow(a);
-
- cout << endl << a.GetStr() << endl;
- cout << endl << GetNumDigitsSum(a) << endl << endl;
-
- system( "pause" );
- return 0;
- }
复制代码 就是大数要作为传入参数时,以常量引用形式传入,然后在函数里面再复制,这样就绕过了显式拷贝构造函数的声明。 |
|