首頁 > 後端開發 > C++ > 為什麼在重載的 C 列印方法中'Hello World”列印為'True”?

為什麼在重載的 C 列印方法中'Hello World”列印為'True”?

Linda Hamilton
發布: 2024-11-14 11:05:02
原創
255 人瀏覽過

Why Does

重載方法中的字串文字歧義

在 C 中,當重載接受多種類型的方法時,必須注意潛在的歧義。如下圖所示:

<code class="cpp">class Output
{
public:
    static void Print(bool value)
    {
        std::cout << (value ? "True" : "False");
    }

    static void Print(std::string value)
    {
        std::cout << value;
    }
};</code>
登入後複製

如果我們嘗試使用如下字串文字呼叫Print 方法:

<code class="cpp">Output::Print("Hello World");</code>
登入後複製

意外地,輸出是“True”而不是“Hello World” ” 。但是,它們可以隱式轉換為布林值。和標準轉換

在重載解析期間,編譯器確定為每個參數呼叫的最佳函數。 bool 的標準轉換被認為比使用者定義的到std::string 的轉換更好。 ::string 參數:

這解決了歧義並正確輸出「Hello World」。影響在C 中至關重要。

以上是為什麼在重載的 C 列印方法中'Hello World”列印為'True”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板