今天無(wú)意中看到兩年前自己總結(jié)的C++和C#中class和struct的比較。 在C++中,class和struct區(qū)別很小。首先,C++中的struct保留有C語(yǔ)言中的struct的功能,但它又與C語(yǔ)言中的struct有很大區(qū)別。C++中的struct可以像class那樣,允許有成員函數(shù),允許繼承。在C++中,class和struct只有兩點(diǎn)區(qū)別。 1.class成員變量和成員函數(shù)默認(rèn)為private,而struct中成員默認(rèn)為public。 2.class默認(rèn)為private繼承,struct默認(rèn)為public繼承。 除這兩點(diǎn)之外,C++中的class和struct完全一樣。不過(guò),為了理解方便,最好將C++中的struct只當(dāng)C語(yǔ)言的struct來(lái)用。 C#中,class和struct區(qū)別很大。我總結(jié)有以下幾點(diǎn): 1.class是引用類型,而struct是值類型。引用類型使用的是堆內(nèi)存,也就是動(dòng)態(tài)內(nèi)存,值類型使用的是棧內(nèi)存。但為了保持外觀的一致,C#讓class和struct在使用時(shí),都要用new來(lái)生成對(duì)象,形如:Typename a=new Typename () 2.class允許定義無(wú)參的構(gòu)造函數(shù),struct不允許。 3.C#中有專門的interface標(biāo)識(shí)來(lái)定義接口,class允許實(shí)現(xiàn)接口(類似繼承),而且允許實(shí)現(xiàn)多個(gè)接口,struct不允許實(shí)現(xiàn)接口。當(dāng)然,C#不允許class繼承多個(gè)class。 這里只簡(jiǎn)要總結(jié)一下,不再詳細(xì)展開說(shuō)明了。 |
|
來(lái)自: herowuking > 《C#》