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