程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 指向類成員函數的指針其實並不是指針

指向類成員函數的指針其實並不是指針

編輯:關於C++

指向類成員函數的指針其實並不是指針。本站提示廣大學習愛好者:(指向類成員函數的指針其實並不是指針)文章只能為提供參考,不一定能成為您想要的結果。以下是指向類成員函數的指針其實並不是指針正文


1、與慣例指針分歧,一個指向成員的指針其實不指向一個詳細的內存地位,它指向的是一個類的特定成員,而不是指向特定對象裡的特定成員。平日最清楚的做法,是將指向數據成員的指針看做為一個偏移量。

這個偏移量告知你,一個特定成員的地位間隔對象的終點有若干個字節。

2、給定一個成員在類內的偏移量,為了拜訪位於誰人偏移量的數據成員,我們須要該類的一個對象的地址。這時候候就須要 .*和->*的操作。pC->*pimC,要求將pC內的地址加上pimC內的偏移量,為的是拜訪pC所指向的C對象中恰當的數據成員。aC.*pimC,要求aC的地址加上pimC中的偏離量,也是為了拜訪pC所指向的C對象中恰當的數據成員。
Ps:
*成員指針解援用操作符(.*)從對象或援用獲得成員
*成員指針箭頭操作符(->*)經由過程對象的指針獲得成員

3、獲得非靜態成員函數的地址時,獲得的不是一個地址,而是一個指向成員函數的指針。

4、為了對一個指向成員函數的指針停止解援用,須要一個對象或一個指向對象的指針。關於指向數據成員的指針的情況,為了拜訪該成員,須要將對象的地址和成員的偏移量相加。關於指向成員函數的指針的情況,須要將對象的地址用作this指針的值,停止函數挪用,和作為其他用處。

5、一個指向成員函數的指針的完成本身必需存儲一些信息,諸如它所指向的成員函數是虛擬的照樣非虛擬的,到哪裡支找到的恰當的虛函數表指針等等。

6、別的彌補一點關於指向內聯函數的指針的成績。一個函數指針指向內聯函數是正當的。但是,經由過程函數指針挪用內聯函數將不會招致內聯式的函數挪用,由於編譯器沒法在編譯期准確地肯定將會挪用甚麼函數。是以在挪用點,編譯器別無他法,只好生成直接、非內聯的函數挪用代碼。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved