首頁 >後端開發 >C++ >C 中的 ODR 使用是什麼?

C 中的 ODR 使用是什麼?

Patricia Arquette
Patricia Arquette原創
2024-12-08 11:39:12775瀏覽

What Constitutes an ODR-Use in C  ?

什麼是「odr-use」?

在 C 語言中,「odr-use」指的是編譯期間必須提供實體定義的情況。該術語將其與不需要實際定義的純粹聲明區分開來。

在不提供直接定義的情況下聲明實體的能力對於模組化程式設計至關重要,因為它允許分離介面(頭檔)來自實作(來源檔案)。但是,為了確保跨編譯單元的行為一致,C 標準定義了何時必須定義實體的特定規則。

「odr-use」的定義

依 C標準,實體在以下情況下是「odr-used」:

  • 它的名稱顯示為潛在評估的表達式,這意味著它可以在表達式中使用實際評估的
  • 它是重載解析期間一組候選函數的成員,即使沒有選擇
  • 它是一個非純虛函數,即使沒有明確調用

ODR 使用和類別模板成員函數

在類別模板的上下文中,成員函數僅在以下情況下才會被實例化:已使用 odr。這意味著,如果在一個編譯單元中實例化類別模板,則只有實際呼叫或用作重載決策一部分的成員函數才會在該單元中實例化。其他成員函數在使用前將保持未實例化狀態。

此行為對於防止不必要的模板成員實例化至關重要,這可以顯著減少編譯時間並提高整體程式效率。它還允許靈活的模板設計,使用戶能夠創建通用類別並根據其特定需求僅實例化必要的功能。

以上是C 中的 ODR 使用是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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