遺產(chǎn)繼承糾紛 請教c 中struct和class繼承的問題?
請教c 中struct和class繼承的問題?1. 默認(rèn)繼承訪問。結(jié)構(gòu)是公共的,類是私有的。例如,下面的代碼:struct a{char a};struct B:a{char B};此時,B通過pu
請教c 中struct和class繼承的問題?
1. 默認(rèn)繼承訪問。結(jié)構(gòu)是公共的,類是私有的。例如,下面的代碼:struct a{char a};struct B:a{char B};此時,B通過public從a繼承。如果上面的結(jié)構(gòu)更改為class,那么B將通過private從a繼承。這是默認(rèn)的繼承訪問。因此,在編寫類繼承時,我們通常編寫:struct B:public a來表示它是公共繼承,而不是默認(rèn)的私有繼承。當(dāng)然,公共繼承還是私有繼承是默認(rèn)繼承取決于子類而不是基類。我的意思是,struct可以繼承class,class也可以繼承struct,所以默認(rèn)的繼承訪問權(quán)限取決于子類是使用struct還是class。如下所示:結(jié)構(gòu)a{};類B:a{}//私有繼承結(jié)構(gòu)C:B{};//公共繼承
2。Struct作為數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)體,其默認(rèn)數(shù)據(jù)訪問控制為public,class作為對象的實現(xiàn)體,其默認(rèn)成員變量訪問控制為private。
3. 關(guān)鍵字“class”也用于定義模板參數(shù),如“typename”。但是關(guān)鍵字“struct”不用于定義模板參數(shù)。
class和struct的區(qū)別?
類和結(jié)構(gòu)之間的差異:
1。類是引用類型,結(jié)構(gòu)是值類型;
2。類可以繼承類,接口可以繼承,結(jié)構(gòu)只能繼承接口,不能繼承;
3。類有默認(rèn)的無參數(shù)構(gòu)造函數(shù),析構(gòu)函數(shù),struct沒有默認(rèn)的無參數(shù)構(gòu)造函數(shù),并且只能聲明無參數(shù)構(gòu)造函數(shù),沒有析構(gòu)函數(shù);
4。Cla Ss可以使用抽象和密封,有保護(hù)修飾符,結(jié)構(gòu)不能使用抽象和密封,沒有保護(hù)修飾符;
5。類必須用new初始化,結(jié)構(gòu)不能用new初始化;
6。垃圾回收機(jī)制保證了類實例的內(nèi)存恢復(fù),struct變量的內(nèi)存分配在使用后會立即自動釋放;
7看,類代表行為,struct通常用來存儲數(shù)據(jù);
8。當(dāng)它作為參數(shù)傳遞時,類變量按地址傳遞,而結(jié)構(gòu)變量按值傳遞。