首頁 >後端開發 >C++ >如何在 C 中使用 Qt PIMPL 習慣用法?

如何在 C 中使用 Qt PIMPL 習慣用法?

Patricia Arquette
Patricia Arquette原創
2024-10-23 14:44:44847瀏覽

How to Use the Qt PIMPL Idiom in C  ?

使用Qt 的PIMPL 慣用法

簡介

PIMPL(指向實現的指標)慣用方式允許將公用介面與實作細節分開一個類,防止該類的使用者關心這些細節。 Qt 採用自己的 PIMPL 慣用法實現,記錄如下。

介面

Qt 的基於 PIMPL 的介面如下所示:

這裡,Q_DECLARE_PRIVATE 巨集聲明 PIMPL 類別並提供存取它的必要機制。

實作

PIMPL 類別CooperativeDialogPrivate 在實作檔案中定義:

Q_DECLARE_PRIVATE

Q_DECLARE_PRIVATE

接口類別關聯起來。它產生 d_func() 輔助方法的內聯實現,該方法提供對具有適當常數的 PIMPL 的存取。

Q_PRIVATE_SLOT

此巨集用於 Qt 4 相容性或針對非 C 11 時編譯器。它聲明了一個供內部使用的私有槽。

Q_DECLARE_PUBLIC

Q_DECLARE_PUBLIC 巨集提供從 PIMPL 存取介面的權限。它產生 q_func() 輔助方法的內聯實現,類似於 d_func()。
  • 常見問題
  • PIMPL 類別不應該是介面類別本身內的私有類別。
  • 對於像 QObject 這樣的不可複製/不可分配的類,PIMPL 指標應該是 const。

出於效能原因,避免使用放置 new 和 Fast Pimpl 習慣用法。

非 QObject 可複製類別PIMPL 習慣用法也可用於可複製的非 QObject 類別。但是,PIMPL 指標必須是非常量。應實現四法則(複製建構子、移動建構子、賦值運算子、析構函數)和獨立的交換函數。

以上是如何在 C 中使用 Qt PIMPL 習慣用法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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