類內(nèi)嵌和類合成

類內(nèi)嵌和類合成

ID:24059616

大?。?9.00 KB

頁(yè)數(shù):4頁(yè)

時(shí)間:2018-11-12

類內(nèi)嵌和類合成_第1頁(yè)
類內(nèi)嵌和類合成_第2頁(yè)
類內(nèi)嵌和類合成_第3頁(yè)
類內(nèi)嵌和類合成_第4頁(yè)
資源描述:

《類內(nèi)嵌和類合成》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)

1、內(nèi)嵌類與類和成內(nèi)嵌類的定義類的成員可以是某中類型的變量或函數(shù)。當(dāng)然類的成員也可以是自定義的數(shù)據(jù)類型。例如:#include"stdio.h"#include"memory.h"structEmbedStruct{//在結(jié)構(gòu)體中默認(rèn)為公有成員intflag;floatresult;};classContainType{public://在類的內(nèi)部定義一個(gè)結(jié)構(gòu)類型作為公有成員。structEmbedStruct{intflag;floatresult;};ContainType(){}ContainType(

2、unsignedcharcLink){m_link=cLink;}private:unsignedcharm_link;};intmain(intargc,char**argv){//使用全局類型標(biāo)識(shí)符::EmbedStructgEm;//通過類名表示使用ContainType定義的公有類型ContainType::EmbedStructeMb;eMb.flag=82;eMb.result90;memccpy(&gEm,&eMb,sizeof(gEm));printf("%d%8.2f",gEm.fl

3、ag,gEm.result);return0;}如上例中在ContainType中,定義了一個(gè)結(jié)構(gòu)體類型EmbedStruct做為公有成員,同樣也可以定義類,函數(shù)指針、枚舉類型。如果在一個(gè)類的定義中還嵌套其他類的定義,被嵌套的類成為內(nèi)嵌類。內(nèi)嵌類的使用方法:因?yàn)轭愋统蓡T與類的實(shí)例相對(duì)獨(dú)立,所以在主函數(shù)中可以通過類名標(biāo)識(shí)來使用這一類型。類型成員也遵循訪問權(quán)限控制。在定義數(shù)據(jù)類型成員的同時(shí),也可以用該類型定義的成員變量。#include"stdio.h"classContain{public://定義一個(gè)類做

4、為公有成員classEmbed{public:Embed(){}Embed(intflag){m_flag=flag;}intGetVaule()const{returnm_flag;}Embed&operator=(constEmbed&bed);voidshowLink(Contain*pCon);private:intm_flag;}m_bed;//將內(nèi)嵌類定義為父類的友類friendclassEmbed;public:Contain(){}Contain(intflag,unsignedcharc

5、Link):m_bed(flag){m_link=cLink;}//在類中可以隨意應(yīng)用自定義的類型成員EmbedGetEmbedMember()const{returnm_bed;}protected:unsignedcharm_link;};//在外部定義內(nèi)嵌類的成員函數(shù),要加雙標(biāo)識(shí)符限定范圍哦Contain::Embed&Contain::Embed::operator=(constEmbed&bed){m_flag=bed.m_flag;return*this;}voidContain::Embed

6、::showLink(Contain*pCon){if(m_flag)printf("%d",pCon->m_link);elseprintf("%c",pCon->m_link);}intmain(){Contain::Embedbed;Containcon(73,'A');con.m_bed.showLink(&con);bed=con.m_bed;printf("%d",bed.GetVaule());return0;}內(nèi)嵌類的應(yīng)用價(jià)值內(nèi)嵌類被封裝在包容類中,外部不能對(duì)它直接訪問,也避免

7、了和它產(chǎn)生名字沖突??梢哉f內(nèi)嵌類對(duì)于外部是不可見的。同時(shí),內(nèi)嵌類雖然是包容類的成員,但二者訪問是完全對(duì)立的,不存在任何耦合,其中一方的定義變化,不影響另一方。針對(duì)內(nèi)嵌類的以上特點(diǎn),可以用它封裝一個(gè)數(shù)據(jù)處理的用戶接口,使數(shù)據(jù)處理與數(shù)據(jù)的標(biāo)識(shí)分離。內(nèi)嵌類就象一個(gè)工作,用戶通過內(nèi)嵌類實(shí)現(xiàn)對(duì)包容類數(shù)據(jù)的處理。內(nèi)嵌類的定義可以根據(jù)用戶的需求進(jìn)行修改、增加刪除,這對(duì)包容類每有什么影響;包容類可以根據(jù)處理對(duì)象的不同,封裝不同的數(shù)據(jù)集。類的合成如果一個(gè)類包含一個(gè)內(nèi)嵌類,那么也要包含該內(nèi)嵌類的對(duì)象作為成員變量,否則內(nèi)嵌類是

8、豪無意義的。一個(gè)類中包含另一類的對(duì)象做為數(shù)據(jù)成員變,叫做類的合成

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。