首先要做的事情是:我知道我的問題很可能是基於一般的誤解,但我希望我可以向你明確我的觀點。我知道在C++中將代碼放入不同文件時,我們已經創建了一個.h(用於定義)和一個.cpp(用於實現)。 在編寫一個類庫時,例如我必須在頭文件中定義私有和公共成員的定義。但是如果 - 出於某種原因 - 我想隱藏用戶的私人信息,該怎麼辦?防止圖書館內部的東西在卑鄙中可見.h
謝謝!
首先要做的事情是:我知道我的問題很可能是基於一般的誤解,但我希望我可以向你明確我的觀點。我知道在C++中將代碼放入不同文件時,我們已經創建了一個.h(用於定義)和一個.cpp(用於實現)。 在編寫一個類庫時,例如我必須在頭文件中定義私有和公共成員的定義。但是如果 - 出於某種原因 - 我想隱藏用戶的私人信息,該怎麼辦?防止圖書館內部的東西在卑鄙中可見.h
謝謝!
您使用Pimpl成語。 Pimpl代表「實現指針」。基本上,你不會將實現細節存儲在類中。相反,你一個不透明的指針實現存儲爲這樣:
class MyClass
{
public:
//public functions here
private:
class Impl; //no definition, opaque
Impl* pimpl;
};
然後你去定義你MyClass::Impl
類只有.cpp文件,因爲只有該函數的定義需要它。
PIMPL語言具有額外的好處,只要該類的接口不會改變,對實現所做的任何更改都不需要重新編譯類客戶端。
你不能。這是C++的缺點之一:標記爲private
的東西是仍然是類聲明的一部分,所以會出現在標題中。
如果你真的想隱藏功能,然後使用平普爾成語可以提供幫助。就個人而言,我寧願忍受這個缺點,因爲使用這個成語可能會導致其他問題,比如你的課程不再可以被複制。