首頁 > 後端開發 > C++ > 主體

為什麼使用不帶括號的函數指標時'cout”列印'1”?

Susan Sarandon
發布: 2024-10-26 09:33:30
原創
1003 人瀏覽過

Why Does

為什麼「計算一個函數而不呼叫它(不是f() 而是f;)。總是印1?」

在在此程式碼中,程式碼嘗試在不使用括號的情況下「呼叫」名為pr 的函數。然而,這實際上並不是呼叫該函數。相反,它將函數指標傳遞給 cout 函數。當函數指標隱式轉換為 bool 值時,其計算結果為 true。由於 true 相當於 C 中的 1,因此輸出始終為 1。

為了澄清,所提供程式碼中的以下幾行並未呼叫 pr 函數:

<code class="cpp">pr;
cout << pr; // output: 1
cout << *pr; // output: 1  (dereferencing the function pointer, which is still true)
cout << &pr; // output: 1 (address of the function, which is a non-zero value)</code>
登入後複製

要真正呼叫對於 pr 函數,您需要使用像 pr() 這樣的括號。

此行為源自於函數指標可以隱式轉換為 bool 的事實。在 C 11 中,可以重載運算子

以上是為什麼使用不帶括號的函數指標時'cout”列印'1”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!