課程
/后端開發(fā)
/C++
/C++遠(yuǎn)征之封裝篇(上)
類內(nèi)定義的函數(shù)一定是內(nèi)聯(lián)函數(shù),為什么?
2016-09-18
源自:C++遠(yuǎn)征之封裝篇(上) 5-3
正在回答
這里面有一個很繞的語言問題,就是類成員函數(shù)的的確確就是內(nèi)聯(lián)函數(shù),但是展不展開是不一定的,所以你說他是內(nèi)聯(lián)函數(shù)沒有一點(diǎn)毛病,只不過展布展開要看編譯器,一般來說代碼如果有8行左右的樣子,那類成員函數(shù)就和普通的函數(shù)調(diào)用沒什么區(qū)別了,該建立棧幀建立棧幀,該給局部變量分配空間就給局部變量分配空間
不一定是
知乎上的回答:
如果不當(dāng)作是內(nèi)聯(lián),多個文件包含該頭文件就會有多份同名函數(shù)定義(實(shí)現(xiàn))了,如果定義的不是類成員函數(shù)而是普通函數(shù),鏈接時會出現(xiàn)同名函數(shù)的錯誤,大概是XXX already defined in XXX。
編譯器決定是否生成內(nèi)聯(lián)代碼完全是優(yōu)化策略的問題。一般認(rèn)為如果函數(shù)體積很小,內(nèi)聯(lián)可以節(jié)約函數(shù)調(diào)用開支以提升性能,就會生成內(nèi)聯(lián)的代碼。如果函數(shù)體積比較大,內(nèi)聯(lián)節(jié)約的函數(shù)調(diào)用開支與函數(shù)本身相比可忽略,反而內(nèi)聯(lián)造會成代碼體積變大,多占用內(nèi)存,這種情況不會生成內(nèi)聯(lián)的代碼。
在類中定義的成員函數(shù)全部默認(rèn)為內(nèi)聯(lián)函數(shù)??梢燥@示加上 inline 標(biāo)識符,或者不加。在類中聲明的成員函數(shù),如果沒加inline,則在類外定義該成員函數(shù)時加了inline,該成員函數(shù)也為內(nèi)聯(lián)函數(shù)。
是的,內(nèi)聯(lián)函數(shù)的定義就是在類體內(nèi)定義的成員函數(shù)
殘損摩天輪
晚安的喵喵
舉報
封裝--面向?qū)ο蟮幕?,本教程力求幫助小伙伴們即學(xué)即會
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2022-12-15
這里面有一個很繞的語言問題,就是類成員函數(shù)的的確確就是內(nèi)聯(lián)函數(shù),但是展不展開是不一定的,所以你說他是內(nèi)聯(lián)函數(shù)沒有一點(diǎn)毛病,只不過展布展開要看編譯器,一般來說代碼如果有8行左右的樣子,那類成員函數(shù)就和普通的函數(shù)調(diào)用沒什么區(qū)別了,該建立棧幀建立棧幀,該給局部變量分配空間就給局部變量分配空間
2018-05-13
不一定是
知乎上的回答:
如果不當(dāng)作是內(nèi)聯(lián),多個文件包含該頭文件就會有多份同名函數(shù)定義(實(shí)現(xiàn))了,如果定義的不是類成員函數(shù)而是普通函數(shù),鏈接時會出現(xiàn)同名函數(shù)的錯誤,大概是XXX already defined in XXX。
編譯器決定是否生成內(nèi)聯(lián)代碼完全是優(yōu)化策略的問題。一般認(rèn)為如果函數(shù)體積很小,內(nèi)聯(lián)可以節(jié)約函數(shù)調(diào)用開支以提升性能,就會生成內(nèi)聯(lián)的代碼。如果函數(shù)體積比較大,內(nèi)聯(lián)節(jié)約的函數(shù)調(diào)用開支與函數(shù)本身相比可忽略,反而內(nèi)聯(lián)造會成代碼體積變大,多占用內(nèi)存,這種情況不會生成內(nèi)聯(lián)的代碼。
2016-10-03
在類中定義的成員函數(shù)全部默認(rèn)為內(nèi)聯(lián)函數(shù)??梢燥@示加上 inline 標(biāo)識符,或者不加。在類中聲明的成員函數(shù),如果沒加inline,則在類外定義該成員函數(shù)時加了inline,該成員函數(shù)也為內(nèi)聯(lián)函數(shù)。
2016-09-18
是的,內(nèi)聯(lián)函數(shù)的定義就是在類體內(nèi)定義的成員函數(shù)