簡體   English   中英

我是否必須在類的頭文件中提及私有方法?

[英]Do I have to mention private methods in the header file of a class?

現在我根本不使用頭文件。 類完全位於單個.cpp文件中。 但是為了節省編譯時間,我現在想要使用頭文件。 我希望Visual Studio不會編譯那些未針對調試版本進行修改的類。

有沒有辦法在頭文件中僅提及公共方法和成員。 從理論上講,這將是編譯器的足夠信息。 如果另一個文件,比如main.cpp包含類頭,則不需要私有方法和成員,是嗎?

如何在不重新輸入私有方法和成員名稱的情況下使用頭文件? 我想要的原因是編碼效率。 當我想要為另一個方法使用的類添加一個小幫助函數時,我不想也必須將它的簽名添加到頭文件中。

如果另一個文件,比如main.cpp包含類頭,則不需要私有方法和成員,是嗎?

不, public方法和成員不一定足夠。 例如,如果另一個.cpp文件嘗試創建您的類的實例:

SomeClass instance;

除了其他方面,編譯器需要知道為SomeClass分配多少內存。 為此,它需要完全了解SomeClass的私有數據成員。

你構建問題的方式讓人覺得你好像打算用語言來對抗。 我認為這不是一個很好的方法。 我認為最好的方法是按照您選擇的語言以通常的方式做事情,並且只有在有明確理解的特定需求時才會離開。

通常在C ++中完成的方式是整個類聲明都在頭文件中,並且定義在某種程度上分割在頭文件和相應的.cpp文件之間。 確切的划分由各種技術考慮決定。 例如,模板和內聯函數通常必須出現在頭文件中。 另一方面,將代碼放在頭文件中會增加依賴性並可能增加構建時間。

有辦法解決這些問題。 然而,由於這涉及額外的復雜性,我認為只有在有明確可識別的需求時才應該這樣做。

所有函數聲明都應該放在頭文件中,所有函數定義都應該放在cpp文件中。 將聲明放在cpp文件中是不好的編碼實踐。

當您編寫模板或內聯函數時,您可以將定義放在標題內。

一旦在頭文件中聲明了類,就必須在頭中的類'聲明中聲明它的所有方法和成員,因為你的類不再在cpp文件中聲明了

我不知道如何做你要問的方法,但還有另一種方法可以讓你有些孤立。 您可能想看一下pimpl習語,因為它提供了有關私人信息的隔離。 這是一些額外的工作,但它非常有用,特別是在大型項目中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM