[问题] 关于运算子重载(operator overloading)

楼主: wtchen (没有存在感的人)   2015-05-23 23:04:03
问题(Question):
目前正在写一个可以进行加减乘除的大数class。
有一个关于operator overloading的问题:
据我所知可以使用method(写在class里面)或function(class外面)
请问一般情况下使用method还是function好呢?
我想要overload的operator包括
+, -, *, /, +=, -/, *=, /=, %
目前我唯二知道需要用function解决的有两种情况:
- operator 作用于 class 跟另一种 class
ex: Complex a; double b; Complex c = a * b;
- 需要用到cout <<
ex: Complex a(1,1); cout << a << endl;
谢谢。
作者: LPH66 (-6.2598534e+18f)   2015-05-23 23:25:00
这两种都是同一种状况: operator 左边的东西动不到的时候其他状况写 member 比较好管理也容易知道这些是一起的你的 Complex * double 其实可以写成 Complex 的 member参数放 double 即可; 需要外面的是 double * Complex不过这种状况其实一般不会写 operator 而是用型态转换 ctor当有 Complex::Complex(double) 及 Complex * Complex 时编译辑会把它用前者变成 Complex 再呼叫后者
作者: Feis (永远睡不着 @@)   2015-05-24 02:31:00
话说之前好像有人讨论过 #1EmsmTYX , 虽然我想法有点不同

Links booklink

Contact Us: admin [ a t ] ucptt.com