2011-08-04 49 views

回答

0

不,它不是。 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文件的方法。

+0

好的。那就在那裏。是否有可能在多個程序集中存在一個類? – sarat

+0

我不知道C++中的程序集。然而,你可以在你想要的任何cpp文件中實現成員函數,沒有相關的限制。 –

+2

@sarat:沒有一個類(類型)必須在1程序集中完全定義。我認爲這也適用於C++/CLI,這是一個CLI的事情。 –

4

是和部分

主要的原因是號,不同的當事人(你和1+工具/設計師)能各自有自己的一類工作的一部分。在C++中,這需要將實際的類定義分割爲多個.h文件,這是不可能的。

但最後所有的代碼都被編譯器(鏈接器)合併爲一個類定義,它必須與所有規則一致。

+0

我喜歡簡單的C語言方法,因爲它具有更好的封裝性,所以只能使用堆分配的對象,因此前向聲明指針類型(比如'FILE *')並且只有頭部中的公共函數。 – sashoalm

0

C#中的部分關鍵字只能用於將由Visual Studio(用戶界面組件)自動生成的數據從代碼中分離出來。如果你想用它來分裂你的大班,那麼你很可能應該考慮將它分成幾個小班。

0

有一個原因與其他答案中沒有提到的不同:CLR作爲JVM與類一起工作,所以類的概念保存在編譯後的代碼中。標準C++通常編譯爲沒有類的概念的對象格式。出於這個原因,C++編譯器必須更改函數名稱,以確保它們對於鏈接器來說是唯一的,這會將生成的庫或可執行文件放在一起。這個過程被稱爲「mangling」。

相關問題