指向類成員函數(shù)的指針其實(shí)并非指針
1、與常規(guī)指針不同,一個(gè)指向成員的指針并不指向一個(gè)具體的內(nèi)存位置,它指向的是一個(gè)類的特定成員,而不是指向特定對象里的特定成員。通常最清晰的做法,是將指向數(shù)據(jù)成員的指針看作為一個(gè)偏移量。
這個(gè)偏移量告訴你,一個(gè)特定成員的位置距離對象的起點(diǎn)有多少個(gè)字節(jié)。
2、給定一個(gè)成員在類內(nèi)的偏移量,為了訪問位于那個(gè)偏移量的數(shù)據(jù)成員,我們需要該類的一個(gè)對象的地址。這時(shí)候就需要 .*和->*的操作。pC->*pimC,請求將pC內(nèi)的地址加上pimC內(nèi)的偏移量,為的是訪問pC所指向的C對象中適當(dāng)?shù)臄?shù)據(jù)成員。aC.*pimC,請求aC的地址加上pimC中的偏離量,也是為了訪問pC所指向的C對象中適當(dāng)?shù)臄?shù)據(jù)成員。
Ps:
*成員指針解引用操作符(.*)從對象或引用獲取成員
*成員指針箭頭操作符(->*)通過對象的指針獲取成員
3、獲取非靜態(tài)成員函數(shù)的地址時(shí),得到的不是一個(gè)地址,而是一個(gè)指向成員函數(shù)的指針。
4、為了對一個(gè)指向成員函數(shù)的指針進(jìn)行解引用,需要一個(gè)對象或一個(gè)指向?qū)ο蟮闹羔?。對于指向?shù)據(jù)成員的指針的情形,為了訪問該成員,需要將對象的地址和成員的偏移量相加。對于指向成員函數(shù)的指針的情形,需要將對象的地址用作this指針的值,進(jìn)行函數(shù)調(diào)用,以及作為其他用途。
5、一個(gè)指向成員函數(shù)的指針的實(shí)現(xiàn)自身必須存儲一些信息,諸如它所指向的成員函數(shù)是虛擬的還是非虛擬的,到哪里支找到的適當(dāng)?shù)奶摵瘮?shù)表指針等等。
6、另外補(bǔ)充一點(diǎn)關(guān)于指向內(nèi)聯(lián)函數(shù)的指針的問題。一個(gè)函數(shù)指針指向內(nèi)聯(lián)函數(shù)是合法的。然而,通過函數(shù)指針調(diào)用內(nèi)聯(lián)函數(shù)將不會導(dǎo)致內(nèi)聯(lián)式的函數(shù)調(diào)用,因?yàn)榫幾g器無法在編譯期精確地確定將會調(diào)用什么函數(shù)。因此在調(diào)用點(diǎn),編譯器別無他法,只好生成間接、非內(nèi)聯(lián)的函數(shù)調(diào)用代碼。
相關(guān)文章
C++解決業(yè)務(wù)辦理時(shí)間問題示例解析
這篇文章主要為大家介紹了C++解決業(yè)務(wù)辦理時(shí)間問題示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12c++將引用或者是指針作為函數(shù)參數(shù)實(shí)現(xiàn)實(shí)參的運(yùn)算
這篇文章主要介紹了c++將引用或者是指針作為函數(shù)參數(shù)實(shí)現(xiàn)實(shí)參的運(yùn)算,需要的朋友可以參考下2014-05-05C語言實(shí)現(xiàn)線性動態(tài)(單向)鏈表的示例代碼
本文主要介紹了C語言實(shí)現(xiàn)線性動態(tài)(單向)鏈表的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05C++文件相關(guān)函數(shù)CreateFile|ReadFile|WriteFile用法詳解
這篇文章主要為大家詳細(xì)介紹了c++有關(guān)文件創(chuàng)建、讀取和寫入的api:CreateFile、ReadFile、WriteFile的具體使用,需要的可以參考下2023-04-04C++?OpenCV實(shí)現(xiàn)物體尺寸測量示例詳解
本文主要介紹了利用OpenCV對物體的尺寸進(jìn)行測量,即先定位到待測物體的位置,然后測量物體的寬高。感興趣的同學(xué)可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)2022-01-01C語言中位運(yùn)算符"|"的5種高級用法總結(jié)
這篇文章主要為大家詳細(xì)介紹了C語言中位運(yùn)算符"|"的5種高級用法,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以參考一下2023-04-04