C++中類的成員函數(shù)及內(nèi)聯(lián)函數(shù)使用及說(shuō)明
成員函數(shù)
即在類內(nèi)定義的方法。通過(guò)對(duì)象名.成員函數(shù)()的方式可以調(diào)用。
一般將成員函數(shù)定義在類外,因?yàn)槌蓡T函數(shù)一般比較復(fù)雜。
簡(jiǎn)單的成員函數(shù)可以定義在類內(nèi),定義在類外的方式如下所示:

成員函數(shù)中出現(xiàn)的參數(shù)
對(duì)于成員函數(shù)中出現(xiàn)的參數(shù),首先先在成員函數(shù)內(nèi)部查找其聲明,如在成員函數(shù)內(nèi)沒(méi)找到,則在類內(nèi)尋找,類內(nèi)所有權(quán)限的成員都可以被考慮,即使聲明部分出現(xiàn)在函數(shù)的使用之后。
如果類內(nèi)也沒(méi)有找到,則再到成員函數(shù)定義之前的作用域繼續(xù)尋找。
類相關(guān)的非成員函數(shù)
這些非成員函數(shù)屬于類的接口組成部分,但其實(shí)際上不屬于類本身。
這些函數(shù)一般不定義在類中。他們一般和類的聲明放在一起,保存在同一個(gè)頭文件中。
用戶如果要使用其中任一一個(gè)函數(shù)只需要調(diào)用該頭文件即可。
自己定義的對(duì)象作為函數(shù)的形參

在類內(nèi)也可以使用自己的類定義變量。也可以讓另一個(gè)類定義的變量作為屬性。
在一個(gè)類中,類內(nèi)的屬性都是已知的。
成員函數(shù)返回值是對(duì)象的引用
如果成員函數(shù)的返回值是對(duì)象的引用的話,則其實(shí)返回的就是調(diào)用該成員函數(shù)的對(duì)象本身。

而如果返回值類型是對(duì)象的話,那么返回的就是對(duì)調(diào)用該成員函數(shù)的對(duì)象的一個(gè)拷貝。
后續(xù)對(duì)其進(jìn)行的更改只是更改該副本的值,不能改變?cè)瓕?duì)象。
成員函數(shù)調(diào)用成員函數(shù)
當(dāng)成員函數(shù)調(diào)用成員函數(shù)時(shí),this指針會(huì)在兩個(gè)函數(shù)之間隱式地傳遞。
內(nèi)聯(lián)函數(shù)
使用內(nèi)聯(lián)機(jī)制的函數(shù)稱為內(nèi)聯(lián)函數(shù)。
一般的函數(shù)在調(diào)用時(shí),會(huì)先保存寄存器,并在返回時(shí)恢復(fù),并且需要拷貝實(shí)參,程序需要在新的位置進(jìn)行。這一過(guò)程效率較低。對(duì)于規(guī)模小、需要頻繁調(diào)用的函數(shù),例如在類內(nèi)定義的成員函數(shù),調(diào)用一個(gè)函數(shù)的時(shí)間開(kāi)銷(xiāo)遠(yuǎn)遠(yuǎn)大于小規(guī)模函數(shù)體中全部語(yǔ)句的執(zhí)行時(shí)間,這種機(jī)制并不合適。
對(duì)此,C++系統(tǒng)會(huì)自動(dòng)將它們作為內(nèi)置(inline)函數(shù)來(lái)處理。程序調(diào)用內(nèi)聯(lián)函數(shù)時(shí),并不是真正地執(zhí)行函數(shù)的調(diào)用過(guò)程(如保留返回地址等處理),而是把函數(shù)代碼嵌入程序的調(diào)用點(diǎn)。這樣可以大大減少調(diào)用成員函數(shù)的時(shí)間開(kāi)銷(xiāo)。
當(dāng)然,太復(fù)雜的函數(shù)不會(huì)作為內(nèi)聯(lián)函數(shù)。
是否作為內(nèi)聯(lián)函數(shù)由編譯器自己決定,對(duì)類內(nèi)定義的成員函數(shù),可以省略inline,因?yàn)檫@些成員函數(shù)已被隱含地指定為內(nèi)置函數(shù)。
若是在函數(shù)外定義,則可以在前面寫(xiě)inline

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)獲取內(nèi)存信息并輸出的實(shí)例
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)獲取內(nèi)存信息并輸出的實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-03-03
C語(yǔ)言循環(huán)鏈表實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言循環(huán)鏈表實(shí)現(xiàn)貪吃蛇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
基于OpenCV實(shí)現(xiàn)的人臉簽到系統(tǒng)源代碼
本文從實(shí)際背景和需求出發(fā),采用人臉識(shí)別簽到考勤改變了傳統(tǒng)人工檢驗(yàn)的做法,極大提高了組織效率和辦事能力,這篇文章主要給大家介紹了關(guān)于如何基于OpenCV實(shí)現(xiàn)的人臉簽到系統(tǒng)的相關(guān)資料,需要的朋友可以參考下2024-04-04
C語(yǔ)言實(shí)現(xiàn)打印星號(hào)圖案
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)打印星號(hào)圖案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
C++中std::chrono時(shí)間庫(kù)的全面解析
C++?std::chrono時(shí)間庫(kù)是C++標(biāo)準(zhǔn)庫(kù)提供的一個(gè)時(shí)間處理庫(kù),提供了一個(gè)方便、靈活和精確的時(shí)間處理工具,下面小編就帶大家深入了解一下std::chrono時(shí)間庫(kù)的使用吧2023-10-10
C++實(shí)現(xiàn)查詢本機(jī)信息的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)查詢本機(jī)信息,并且進(jìn)行上報(bào),文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的可以了解一下2023-05-05

