在C++中,我們可以在.h文件中聲明一個類,並可以在多個文件中定義函數的定義。在C#中使用partial關鍵字和類是否相同?C#中的部分類和C++中定義多個CPP文件中的函數是一樣的嗎?
回答
不,它不是。 C#中的partial關鍵字允許您將新方法和成員添加到類中。在C++中,一旦在頭文件中定義了一個類,就需要更改該頭文件以更改該類,不能只是在不同的頭文件中聲明新的方法/成員。
C#:
class A{
public void f(){}
}
//other file:
partial class A{
public void g(){}
}
現在類A有兩個函數f和g。 在C++但是,一旦你定義:
class A{
public:
void f();
}
˚F將成爲A.唯一的方法在一個新的頭文件中你不能聲明新方法,也不定義不屬於類定義在cpp文件的方法。
是和部分
主要的原因是號,不同的當事人(你和1+工具/設計師)能各自有自己的一類工作的一部分。在C++中,這需要將實際的類定義分割爲多個.h
文件,這是不可能的。
但最後所有的代碼都被編譯器(鏈接器)合併爲一個類定義,它必須與所有規則一致。
我喜歡簡單的C語言方法,因爲它具有更好的封裝性,所以只能使用堆分配的對象,因此前向聲明指針類型(比如'FILE *')並且只有頭部中的公共函數。 – sashoalm
C#中的部分關鍵字只能用於將由Visual Studio(用戶界面組件)自動生成的數據從代碼中分離出來。如果你想用它來分裂你的大班,那麼你很可能應該考慮將它分成幾個小班。
有一個原因與其他答案中沒有提到的不同:CLR作爲JVM與類一起工作,所以類的概念保存在編譯後的代碼中。標準C++通常編譯爲沒有類的概念的對象格式。出於這個原因,C++編譯器必須更改函數名稱,以確保它們對於鏈接器來說是唯一的,這會將生成的庫或可執行文件放在一起。這個過程被稱爲「mangling」。
- 1. 一個.cpp文件中的多個類
- 2. 我可以從另一個部分類中調用一個部分類中定義的函數嗎?可能嗎?
- 3. Objective-C中的多個類定義在一個.h和.m中
- 4. .m文件中的C函數比.c文件中的慢嗎?
- 5. Xcode中的Objective-C++和.cpp文件
- 6. C++/VS2005:在兩個不同的.cpp文件中定義相同的類名
- 7. 我可以在多個文件中分割我的C#類嗎?
- 8. C中的多個定義
- 9. C++錯誤:多類函數的定義
- 10. 從C#中的WSDL文件構建一個自定義的類#
- 11. 外部「C」函數是一個單獨的類型嗎?
- 12. Makefile爲一個.o文件和一個.CPP文件的C++
- 13. C++內聯函數的定義是否必須在同一個文件中?
- 14. 對一個文件中Class :: Class()和函數的未定義引用? C++
- 15. 在C++定義文件中的功能擴展(CPP)
- 16. 在多個cpp文件中使用類/結構體/聯合C++
- 17. C++:我怎樣才能定義一個數組類型的客戶在類名爲careercenter然後定義在.cpp文件中創建,修改和刪除
- 18. 來自另一個.cpp文件的QT調用函數C++
- 19. C#中的XML intellisense和VB.Net一樣嗎?
- 20. 檢查一個文件是否是C中的特定類型
- 21. 的Visual C++,組織的.h和.cpp文件中的文件夾
- 22. C/C++中的單個參數(函數)中的多個參數
- 23. 在Makefile.am的_SOURCE中分配c和cpp文件
- 24. 這是在一個Objective-C代碼文件中的C++嗎?
- 25. C++中的部分類
- 26. C++ - 必須在頭文件中定義朋友函數嗎?
- 27. 可能在C結構中定義一個函數嗎?
- 28. C++如何從一個類的cpp文件中創建一個.H
- 29. 使用C++模塊時,是否將函數聲明(.hpp文件)與它們的定義(.cpp文件)分開?
- 30. 能夠分別指定objective-c接口和實現部分中的多個類聲明和定義
好的。那就在那裏。是否有可能在多個程序集中存在一個類? – sarat
我不知道C++中的程序集。然而,你可以在你想要的任何cpp文件中實現成員函數,沒有相關的限制。 –
@sarat:沒有一個類(類型)必須在1程序集中完全定義。我認爲這也適用於C++/CLI,這是一個CLI的事情。 –