2012-02-04 50 views
0

在不同的代碼庫環顧我看到各種款式:標題和CPP或只是CPP文件 - 最佳實踐?

  1. 類「接口」的頭文件,並在cpp文件的實際IMPL定義。在這種方法中,頭文件看起來很好定義並易於閱讀,但cpp文件看起來很混亂,因爲它只是一個方法列表。

  2. 我看到的第二種方法就是把所有東西都放在一個類的cpp文件中。這些類文件在類定義的主體中包含定義和實際方法impls。這種方法對我來說更好(更像Java和c#)。

我應該使用哪種風格?

+4

你是如何打算從另一個CPP訪問您的類文件與第二? – 2012-02-04 11:53:49

+1

準確。第二種方法只在將所有內容放在一個巨大的cpp文件中時才起作用。這不是一個好主意。 – 2012-02-04 11:55:53

回答

7

爲所有,但最簡單的程序,風格#2是根本不可能的。如果您使用來自多個其他.cpp文件的函數定義的#include a .cpp文件,則定義將被添加到多個目標文件(.o/.obj),並且鏈接器將會抱怨衝突符號。

使用風格#1和學會生活在混亂。

0

由於您使用C++進行了標記,因此請選擇第一種樣式。對於Java程序員來說,我不覺得困惑,它可能看起來不同,但在C++中,您總是會使用這種方法。

實際上,在我最喜歡的IDE(MSVS)中,我並排打開了頭文件和cpp文件。使查找原型,和類聲明容易。

而當你有十幾個班;一打.h文件和另外十幾個.cpp文件,將使您的工作變得更簡單。因爲,當你想看看什麼是班級時,你只需打開相關的.h文件,然後看看班級成員,也許是簡短的評論。您不需要通過幾行深入的代碼。

結論:您給出的樣式選項僅適用於小代碼,通常是單個文件,只有很少的方法等。否則,它甚至不是一個選項。 (@Thomas給出了爲什麼#2甚至沒有選項的原因)

0

C++不使用「接口」,他們使用類 - 基類/派生類。如果項目很小,我使用一個文件來定義類/及其實現方法,如果項目很大,則使用單獨文件。 在java中,我將它們打包成一個包,然後在需要時導入它。

0

部首(HPP):
標題包括代碼,特別是函數聲明的聲明。從技術上講,類是在頭文件中定義了,但同樣,成員函數只是聲明。

其他文件中的代碼將只包含此標題並保留所有必要的信息。

實施(CPP):
實現包括的功能,成員函數和變量的定義。

理由:

  • 頁眉文件給出了一個開發者(你的代碼的外部用戶)一個普通的概述,只是提供了外部可用的代碼(即容易閱讀,只需要對用戶的信息)。
  • 頁眉文件讓編譯器檢查執行的正確性
  • 頁眉文件允許編譯器檢查外部代碼的正確性
  • 頁眉文件允許單獨編譯。你需要記住。在過去,計算機沒有足夠的資源在編譯過程中將所有內容保存在主內存中。頭文件很小,而實現文件很大。

使用#style 1,即使是簡單的程序。所以你可以輕鬆地學習。這可能看起來過時了,特別是在現代多通道編譯器的背景下。但是單獨的頭文件甚至在今天是有益的。關於下一個C++ - 標準的傳言出現了,據我所知符號出口(Java或C#)將成爲可能。但是不要讓我失望!

注:
- 成員函數,它們定義一個類裏面默認在線,通常你不想要這個
- 使用總是定義衛士

0

如果你是開發大型項目,你會發現第一種方法可以幫助你很多。第二種方法可能會幫助你做小型項目。隨着您的項目變得越來越大,複雜性管理是軟件開發的一個大問題,而第一種方法是更好的選擇。

0

我要做的就是:

這樣我得到:

  • 快速編譯(只需要重新編譯。CPP文件,除非我改變類接口)
  • 幾個問題與圓形聲明
  • 可接受的低水平盲目繁瑣的手工工作:-)