首頁 > 後端開發 > C++ > `Link* next` 是否使用 C 範本中註入的類別名稱?

`Link* next` 是否使用 C 範本中註入的類別名稱?

DDD
發布: 2024-11-02 22:18:30
原創
816 人瀏覽過

Does `Link* next` Use the Injected Class Name in C   Templates?

在沒有範本參數的類別範本中使用類別名稱

考慮C 書中的以下程式碼:

<code class="cpp">template <typename E> class Link {
    ...
    Link* next;  // this line may be confusing
    ...
};</code>
登入後複製

考慮C 書中的以下程式碼:

在此程式碼中,宣告成員next 時未指定範本參數E,引發了對其正確性的擔憂。接下來不應該是 Link* 嗎?

解釋

這是透過「注入類別名稱」的概念來解釋的。根據 C 標準 [temp.local],當在沒有模板參數的情況下使用時,類別模板中的類別名稱相當於類別名稱後面跟著尖括號中包含的模板參數。因此,在這種情況下,Link* 相當於 Link*。 這條規則是為了方便起見,確保類別中的類別名稱引用類別本身,而不是帶有同名。對於類別模板,它提供了速記符號,特別是在處理擴充模板參數清單時。

以上是`Link* next` 是否使用 C 範本中註入的類別名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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