首頁 > 後端開發 > C++ > 為什麼我不能直接從定義類別中呼叫內聯友元函數?

為什麼我不能直接從定義類別中呼叫內聯友元函數?

Linda Hamilton
發布: 2024-11-29 11:56:11
原創
796 人瀏覽過

Why Can't I Directly Call Inline Friend Functions from Within Their Defining Class?

內聯友元函數的可見範圍

儘管在類別中定義了內聯友元函數,但它們的實際範圍超出了類別的邊界。 C 標準規定,內聯友元函數的名稱引用在最近的封閉命名空間範圍中聲明的函數。

但是,在該命名空間內提供匹配聲明之前,無法透過非限定或限定查找存取此聲明的函數。範圍。因此,從類別本身、封閉作用域或成員函數直接呼叫友元函數將導致錯誤。

此限制源自於以下事實:友元函數是在類別中聲明的,而不覆蓋或重新定義現有的函數名稱。因此,編譯器無法辨識類別或封閉命名空間範圍中的函數,直到在該命名空間中遇到明確宣告為止。

要存取內聯友元函數,您可以使用參數相關查找 (ADL) 。 ADL 允許編譯器根據呼叫中使用的參數類型來搜尋函數。這種方法符合以下原則:函數被認為與作為參數傳遞的類型「相關」。

以上是為什麼我不能直接從定義類別中呼叫內聯友元函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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