2010-07-29 119 views
6

是什麼下面的聲明之間的差(在C++/CLI):C++/CLI接口類與接口結構

public interface class IC {}; 

public interface struct IS {}; 

類似的情況:

public enum class EC {}; 

public enum struct ES {}; 

回答

10

它們是相同的。

有關詳情,請參閱參考MSDN's interface class,下備註:

界面結構是等同於接口類。


我相信微軟決定讓這兩個選項,只是爲了保持一致性ref class/ref structvalue class/value struct。但是,由於接口沒有私有成員,因此對於接口而言,這兩個語句完全相同。

+0

現在,當我知道這一點時,我認爲引入了冗餘構造是因爲C++/cli的創建者旨在減少新關鍵字的數量。這就是爲什麼他們想出了一種稱爲上下文敏感關鍵字的解決方案。他們不能引入「接口」關鍵字,因爲它會與大量已寫入的源代碼(例如「接口」類型名稱)相沖突。所以他們可能決定將它與class關鍵字連接在一起來創建一個上下文,並使用struct關鍵字來保持一致。 – 2010-07-29 21:35:34

1

沒有區別。它們是相同的。

請記住,比「真正的」C++實際上結構和類之間幾乎沒有區別,除了默認的成員可訪問性。因此,在C++/CLI的平行宇宙中,無論如何,可訪問性規則是不同的,它們並不完全相同。

+0

你的意思是說「(...)哪裏的可訪問性規則不同」?他們有什麼不同? – 2010-07-29 20:34:33

+0

好吧,首先,你比C++有更多的選擇,因爲你有'public protected'和'private protected'之類的東西,它們不存在於'普通'C++中。 – 2010-07-30 14:45:44