2012-07-16 62 views
2

是否應將僅在實現文件中使用的幫助函數排除在頭文件聲明之外?輔助函數是否應該從頭文件聲明中排除? (C++)

通過助手函數我的意思是一個便利函數,它與一個類緊密關聯,但不表示對該類的操作,不需要訪問成員變量,因此不是方法。

一方面,將它們包含在頭文件中會使頭文件成爲相應C++實現的綜合參考。另一方面,它引入了一段代碼來保持一致性。更重要的是,包含幫助函數會鼓勵輕微違反抽象層,因爲函數並不意味着要在其他語境中運行,儘管不是嚴格的方式,因爲只要幫助函數本身並沒有破壞它所使用的類的封裝。

回答

9

一方面,將它們包含在頭文件中會使頭文件成爲相應C++實現的綜合參考。

這不是頭文件的目的。頭文件應該是接口的參考,而不是實現。有些實現細節有時會泄露,但應儘可能避免這種情況。

所以要回答你的標題問題:是的。

0

如果它們僅用於實現的一部分,則只應將它們排除在主頭文件之外。但是,如果你想測試這些函數,你會想將它們的引用添加到單獨的頭文件中。

如果它們在實現的多個部分中使用,它們將屬於它們自己的內部頭文件,以便它們可以共享。