首頁 >後端開發 >C++ >C 模板中 ODR 使用的構成為何以及它與實例化有何關係?

C 模板中 ODR 使用的構成為何以及它與實例化有何關係?

Susan Sarandon
Susan Sarandon原創
2024-12-11 09:43:11492瀏覽

What Constitutes ODR-Use in C   Templates and How Does It Relate to Instantiation?

理解「odr-use」的概念

在C 程式設計領域,與單一定義規則相關的一個關鍵面向( ODR)是「odr-使用」。此定義表示特定實體(例如類別範本中的成員函數)必須在程式碼中提供相應的定義。

需要澄清的是,僅聲明是不夠的;還需要在程式碼中提供相應的定義。實體必須以觸發 ODR 使用的方式明確使用。這個概念的產生是因為「使用」可以根據上下文有不同的解釋。因此,該標準使用術語“odr-use”來表達特定要求。

值得注意的是,純虛函數的存在會自動導致 ODR-use,無論它是否實際在內部使用程式碼庫。這種行為源自於與純虛函數相關的獨特屬性。

ODR 使用和模板實例化

在模板領域,ODR 使用起著關鍵作用與實例化過程一起進行。 C 標準的 14.7 節闡明了需要模板實例化的條件。然而,出現的一個基本原則是模板實例化和 ODR 使用之間的直接關聯。

進一步說明,模板僅在程式碼中使用時才會被實例化。本文中的「使用」特指 ODR 使用。因此,類別模板的成員函數在被呼叫時或在類別本身被實例化並且成員函數被指定為虛擬時被實例化。

透過擁抱這一原則,該標準使開發人員能夠實例化一個列出不支援小於運算符 (

以上是C 模板中 ODR 使用的構成為何以及它與實例化有何關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn