創建並定義類後(在「h文件」中)。 除了「h文件」(屬於該類)之外,我該如何決定創建(或不是)「cpp文件」(僅適用於課程)?C++中的類(cpp文件&h文件)
回答
最好的做法是將頭文件和實現文件分開,以便在頭文件.h中定義類並在.cpp文件中實現它,這將幫助您跟蹤和調試錯誤並顯示乾淨的代碼,
在模板類是剛剛記在一個單獨的頭文件中定義,讓您的代碼通過分離模板結構良好的和乾淨的正常類
這裏是一個小例子,讓你去。
這是Foo的頭文件。讓我們把它稱爲 「foo.h中」
#pragma once
#ifndef FOO_H
#define FOO_H
class Foo{
public:
void function();
protected:
private:
};
#endif
這是Foo的源文件。讓我們把它稱爲「Foo.cpp中」
#include "foo.h"
void Foo::function(){
// ... implement ...
return;
}
彙編在一起,我們可以創建一個目標文件。我們將其稱爲「foo.o」 如果您鏈接「foo.o」,則可以在程序中使用您的課程。
例子:
#include "foo.h"
int main(){
Foo foo;
foo.function();
return 0;
}
如果我有兩個類,其中一人有一個矩陣,我想,其他類將有一個訪問從矩陣中讀取數據。 我如何鏈接它們? – YkI
@YkI你可以讓他們的「朋友」,或者你可以使用觀測器和變壓器功能的兩個類之間的接口。我會推薦後者。所以具有矩陣的類需要成員函數(也稱爲方法),其函數返回其他類所需的信息。這可能是一個函數,其返回類型是整個矩陣,或者可能是一個函數,它接受一個索引並返回一個特定的值。 *這些將是觀察員職能。另一個類需要成員函數(也稱爲方法)接受矩陣類返回的數據。 –
的.h文件是一個描述符文件,描述你的函數/類的簽名,讓其他班其他cpp文件可以使用它。
您需要將h文件視爲合同。你宣佈了一項義務。
稍後,當您決定實施cpp時,您就履行了義務。
其他類/ cpp文件可以單獨依靠您的義務,假設您還將在cpp中執行該義務。
例如:
- 創建一個h文件「myClassA.h」和聲明一個稱爲myClassA類()稱爲myClassA.SayHello成員方法
- 您包括myClassA.h在另一類創建myClassB.cpp,這樣myClassB就知道myClassA有一個名爲SayHello()的方法,它可以調用它。
- 如果您不包含myClassA.h,並且您嘗試在myClassB.cpp中調用myClassA.SayHello(),您將從編譯器中得到一個錯誤,因爲myClassB不能「知道」myClassA。
- 如果你確實包含了h文件,但是並沒有打算在myClassA.cpp中實際創建和實現myClassA,那麼你會得到一個編譯錯誤,因爲沒有找到實現。
這裏有很多管理詞彙。複製他們從一個過頂的面向對象的書? :P –
爲了記錄在案,編程術語不是「合同」或「義務」,但_API_。 –
你是對的,我只是試着用通俗的話來解釋它。 雖然我覺得評論有趣, 我確實認爲您的評論沒有建設性,並且與專用於回答問題的網站無關...... – eran
- 1. CPP | .h文件(C++)
- 2. C++ - 從.h文件獲取.cpp文件中的類變量
- 3. 的Visual C++,組織的.h和.cpp文件中的文件夾
- 4. C++ .h&.cpp文件 - 原型錯誤
- 5. C++ .h和.cpp文件分開
- 6. 從.h文件生成.cpp源文件
- 7. #include .h或.cpp文件?
- 8. 的.h文件包含在頭文件和cpp文件
- 9. (C++).h文件中的整個類?
- 10. 模板類實現中單獨的.h和.cpp文件
- 11. 僅在類型爲* .cpp和* .h的文件中計數行
- 12. 在QT中如何從.ui文件製作.cpp和.h文件?
- 13. 我應該在.cpp或.h文件中包含頭文件?
- 14. VS 2012:排序.CPP/.h文件
- 15. 從.ui文件生成.h和.cpp
- 16. 我可以在c#項目中添加.h和.cpp文件嗎?
- 17. 鏈接共享.h文件的2個cpp文件
- 18. 從C/cpp文件
- 19. C++如何從一個類的cpp文件中創建一個.H
- 20. C++創建在單獨的.cpp和.h文件
- 21. 給C++添加第二個.h/cpp文件的麻煩
- 22. 使用C++庫,正值的.cpp和.h文件
- 23. Linux操作系統Ubuntu C++的.h和.cpp文件
- 24. QT創建者:爲.cpp&.h文件添加文件夾
- 25. 圖h文件和cpp文件即時得到許多錯誤
- 26. 所有.cpp文件都依賴於兩個.h文件?
- 27. 爲什麼CPP文件名必須與H文件名相符?
- 28. 爲這個.cpp文件創建一個h文件
- 29. 從源文件(.cpp和.h)生成.ui文件
- 30. 從.h文件創建.cpp文件visual studio
如果成員函數不是微不足道的,那麼將它們放在單獨的源文件中可能是一個好主意。例外是模板類必須在頭文件中完全定義。 –