[英]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"
(其中c
是double
類型的標量值)操作數都沒有 class 或枚舉類型,並且未定義double
和const char *
類型的內置運算符 +。 當第二個操作數具有 integer 類型時,定義指針算法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.