C++中類的成員函數(shù)及內(nèi)聯(lián)函數(shù)使用及說明
成員函數(shù)
即在類內(nèi)定義的方法。通過對象名.成員函數(shù)()的方式可以調(diào)用。
一般將成員函數(shù)定義在類外,因?yàn)槌蓡T函數(shù)一般比較復(fù)雜。
簡單的成員函數(shù)可以定義在類內(nèi),定義在類外的方式如下所示:
成員函數(shù)中出現(xiàn)的參數(shù)
對于成員函數(shù)中出現(xiàn)的參數(shù),首先先在成員函數(shù)內(nèi)部查找其聲明,如在成員函數(shù)內(nèi)沒找到,則在類內(nèi)尋找,類內(nèi)所有權(quán)限的成員都可以被考慮,即使聲明部分出現(xiàn)在函數(shù)的使用之后。
如果類內(nèi)也沒有找到,則再到成員函數(shù)定義之前的作用域繼續(xù)尋找。
類相關(guān)的非成員函數(shù)
這些非成員函數(shù)屬于類的接口組成部分,但其實(shí)際上不屬于類本身。
這些函數(shù)一般不定義在類中。他們一般和類的聲明放在一起,保存在同一個頭文件中。
用戶如果要使用其中任一一個函數(shù)只需要調(diào)用該頭文件即可。
自己定義的對象作為函數(shù)的形參
在類內(nèi)也可以使用自己的類定義變量。也可以讓另一個類定義的變量作為屬性。
在一個類中,類內(nèi)的屬性都是已知的。
成員函數(shù)返回值是對象的引用
如果成員函數(shù)的返回值是對象的引用的話,則其實(shí)返回的就是調(diào)用該成員函數(shù)的對象本身。
而如果返回值類型是對象的話,那么返回的就是對調(diào)用該成員函數(shù)的對象的一個拷貝。
后續(xù)對其進(jìn)行的更改只是更改該副本的值,不能改變原對象。
成員函數(shù)調(diào)用成員函數(shù)
當(dāng)成員函數(shù)調(diào)用成員函數(shù)時,this指針會在兩個函數(shù)之間隱式地傳遞。
內(nèi)聯(lián)函數(shù)
使用內(nèi)聯(lián)機(jī)制的函數(shù)稱為內(nèi)聯(lián)函數(shù)。
一般的函數(shù)在調(diào)用時,會先保存寄存器,并在返回時恢復(fù),并且需要拷貝實(shí)參,程序需要在新的位置進(jìn)行。這一過程效率較低。對于規(guī)模小、需要頻繁調(diào)用的函數(shù),例如在類內(nèi)定義的成員函數(shù),調(diào)用一個函數(shù)的時間開銷遠(yuǎn)遠(yuǎn)大于小規(guī)模函數(shù)體中全部語句的執(zhí)行時間,這種機(jī)制并不合適。
對此,C++系統(tǒng)會自動將它們作為內(nèi)置(inline)函數(shù)來處理。程序調(diào)用內(nèi)聯(lián)函數(shù)時,并不是真正地執(zhí)行函數(shù)的調(diào)用過程(如保留返回地址等處理),而是把函數(shù)代碼嵌入程序的調(diào)用點(diǎn)。這樣可以大大減少調(diào)用成員函數(shù)的時間開銷。
當(dāng)然,太復(fù)雜的函數(shù)不會作為內(nèi)聯(lián)函數(shù)。
是否作為內(nèi)聯(lián)函數(shù)由編譯器自己決定,對類內(nèi)定義的成員函數(shù),可以省略inline,因?yàn)檫@些成員函數(shù)已被隱含地指定為內(nèi)置函數(shù)。
若是在函數(shù)外定義,則可以在前面寫inline
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++?opencv圖像處理實(shí)現(xiàn)灰度變換示例
這篇文章主要為大家介紹了C++?opencv圖像處理灰度變換的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05MoveWindow() SetWindowPos()的區(qū)別于聯(lián)系
這篇文章主要介紹了VC++中MoveWindow() SetWindowPos()的區(qū)別于聯(lián)系,需要的朋友可以參考下2015-01-01詳解C++設(shè)計模式編程中策略模式的優(yōu)缺點(diǎn)及實(shí)現(xiàn)
這篇文章主要介紹了C++設(shè)計模式編程中策略模式的優(yōu)缺點(diǎn)及實(shí)現(xiàn),文中討論了策略模式中設(shè)計抽象接口的繼承和組合之間的區(qū)別,需要的朋友可以參考下2016-03-03C/C++實(shí)現(xiàn)crc碼計算和校驗(yàn)
循環(huán)冗余校驗(yàn)(Cyclic Redundancy Check, CRC)是一種根據(jù)網(wǎng)絡(luò)數(shù)據(jù)包或計算機(jī)文件等數(shù)據(jù)產(chǎn)生簡短固定位數(shù)校驗(yàn)碼的一種信道編碼技術(shù)。本文主要介紹了C++實(shí)現(xiàn)crc碼計算和校驗(yàn)的方法,需要的可以參考一下2023-03-03C++調(diào)用Python基礎(chǔ)功能實(shí)例詳解
c++調(diào)用Python首先安裝Python,本文以win7為例,給大家詳細(xì)介紹C++調(diào)用Python基礎(chǔ)功能,需要的朋友參考下吧2017-04-04