簡體   English   中英

字符串運算符,如std :: string

[英]String operator like std::string

說我有一個功能:

void foo(const std::string& str);

我可以調用該函數:

foo("my string");

std::string如何接受字符串代替類型? 它是重載運算符嗎? 我正在創建自己的字符串類,並且此功能至關重要。

接到電話

foo("my string");

編譯器必須經過各種步驟來決定應解析為哪個函數調用。

  1. 找出給定范圍內的所有函數foo
  2. 如果有多個名為foo函數,它將嘗試查找可以用給定參數調用的所有可行函數。 如果有多個匹配項,它將嘗試根據給定的參數找到最佳匹配項。 如果只有一個可行的功能,則編譯器繼續進行。 如果沒有可行的功能,則會出現編譯錯誤。
  3. 如果只有一個名為foo函數,它將嘗試查看用於調用該函數的參數是否與參數類型匹配。 如果是,則編譯器繼續。 否則,將出現編譯器錯誤。

弄清楚參數是否與函數的參數類型匹配的邏輯太長,無法在此處描述。 您可以在http://en.cppreference.com/w/cpp/language/overload_resolutionhttp://en.cppreference.com/w/cpp/language/implicit_conversion上了解更多信息。

在您的情況下,可以使用std::string的構造函數將"my string"轉換為std::string 通話

foo("my string");

等效於:

foo(std::string("my string"));

暫無
暫無

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

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