不重新創建新的double類,直接覆寫編譯器自帶的double的加減乘除
uj5u.com熱心網友回復:
沒有辦法。只要不是類的成員運算子的多載不管回傳值是什么型別,不管多載什么型別的運算子,必須有一個引數為型別別或者列舉型別。
uj5u.com熱心網友回復:
可以呀,普通函式多載。uj5u.com熱心網友回復:
我也等個結果。uj5u.com熱心網友回復:
不可以,多載必須是針對class struct 以及 enum多載的運算子
當運算式中出現某個運算子,且其至少一個運算元擁有型別別或列舉型別時,使用多載決議在具有與以下各項匹配的簽名的函式中,確定所要呼叫的用戶定義函式:
uj5u.com熱心網友回復:
double是簡單型別,你復寫啥?又不是類uj5u.com熱心網友回復:
有這個需求,其他實作方式也可以,類似于劫持函式,當需要使用double的加減乘除的時候,自定義操作替換。
uj5u.com熱心網友回復:
有這個需求,其他實作方式也可以,類似于劫持函式,當需要使用double的加減乘除的時候,自定義操作替換。
uj5u.com熱心網友回復:
有這個需求,其他實作方式也可以,類似于劫持函式,當需要使用double的加減乘除的時候,自定義操作替換。
uj5u.com熱心網友回復:
把double 封裝為類唄,類似string 之于char*uj5u.com熱心網友回復:
作業量太大了uj5u.com熱心網友回復:
不大啊#include <iostream>
using namespace std;
class Double {
double _value;
public:
Double(double v=0.0):_value(v){}
operator double() {
return _value;
}
Double operator+(const Double& rh) {
cout << "operator+(Double)" << endl;
return Double(rh._value + _value);
}
Double operator+(const double& rh) {
return Double(rh + _value);
}
friend Double operator+(const double& lh, Double rh);
};
Double operator+(const double& lh, Double rh) {
cout<<"operator + (double ,Double)"<<endl;
return Double(lh + rh._value);
}
int main()
{
Double d = 0.5;
double x = d;
Double y = x + d;
Double z = d / y;
}
uj5u.com熱心網友回復:
ctrl+F。替換全部 double - >DOUBLE。多載DOUBLE operator+-*/uj5u.com熱心網友回復:
你提供operator double() 轉換函式,就可以無縫的使用Double和double,然后就可以只多載你要多載的部分。uj5u.com熱心網友回復:
不是這個類,是整個工程專案 修改起來非常大,近百萬行uj5u.com熱心網友回復:
不是這個類,是整個工程專案 修改起來非常大,近百萬行uj5u.com熱心網友回復:
謝謝,應該可以實作需求
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
嗯 主要是現在的專案有差異要驗證,不使用在正式代碼中[xiao]uj5u.com熱心網友回復:
怎么結貼?哪位告訴一下uj5u.com熱心網友回復:
看你做這個事情的目的是什么,如果是因為精度不夠啥的,那可以針對double多載加減乘除,自己寫代碼。如果意義不大不建議多載。uj5u.com熱心網友回復:
精度問題,驗證差異uj5u.com熱心網友回復:
沙發,觀望大神轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/29306.html
標籤:C++ 語言
