簡體   English   中英

在 cpp 中為 double 和 string 數據類型定義運算符 +

[英]defining operator + for double and string data types in cpp

我正在嘗試使用以下 function 為字符串和雙精度定義運算符 +

string operator + (const double& b,const string a){
    return to_string(b)+a;
}

當我進行以下操作時,它運行良好

double c = 100.256;
string d = "if only";
cout<<c+d<<"\n";

但是當我傳遞 const char 而不是 string 時,它會引發編譯錯誤('double' 和 'const char [4]' 類型的無效操作數到二進制 'operator+')

double c = 100.256;
string test = c+"sff";

為什么 const char[] "sff" 到字符串的隱式轉換沒有發生?

根據 C++ 17 標准(16.3.1.2 表達式中的運算符)

1 如果表達式中沒有運算符的操作數類型為 class 或枚舉,則假定該運算符是內置運算符並根據第 8 條進行解釋。

在這個表達式中

c+"sff"

(其中cdouble類型的標量值)操作數都沒有 class 或枚舉類型,並且未定義doubleconst char *類型的內置運算符 +。 當第二個操作數具有 integer 類型時,定義指針算法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM