C++靜態成員函數指針

C++的靜態成員函數指針

?

先簡單的說說非靜態的成員函數。

非靜態成員函數指針的類型:

? ? 類的非靜態成員是和類的對象相關的。也就是說,要通過類的對象來訪問變量。

成員函數的類型定義為:

? ? typedef void (A::*pfunc)();

?A是一個類,有一個成員函數void test();

?使用:

? ? pfunc p = A::test;

?

示例:

[cpp]?view plain?copy

  1. #include?<iostream>??
  2. ??
  3. using?namespace?std;??
  4. ??
  5. class?A?{??
  6. ??
  7. public?:??
  8. ??void?test1()?{?cout?<<?"test"?<<?endl;?};??
  9. public?:??
  10. ??
  11. };??
  12. ??
  13. typedef?void?(A::*PFunc)();??
  14. ??
  15. int?main()?{??
  16. ??A?a;??
  17. ??PFunc?f?=?&(A::test1);??
  18. ??
  19. ??(a.*f)();??
  20. ??
  21. ??system("PAUSE");??
  22. ??return?0;??
  23. }??

?

?

?

需要注意的是因為成員函數地址的解引用必須要附駐與某個對象的地址,所以我們必須創建某個對象,來調用這個函數。

?

靜態成員函數,可以通過類作用域符來訪問。

靜態成員函數的類型:靜態成員函數的地址可用普通函數指針儲存,而普通成員函數地址需要用 類成員函數指針來儲存。

typedef void (*pfunc) ();

這個和普通函數的指針是一樣的。

使用的時候也可以像普通函數一樣。

?

示例:

[cpp]?view plain?copy

  1. #include?<iostream>??
  2. ??
  3. using?namespace?std;??
  4. ??
  5. class?A?{??
  6. ??
  7. public?:??
  8. ??static?void?test1()?{?printf("test\n");?};??
  9. public?:??
  10. ??
  11. };??
  12. ??
  13. typedef?void?(*PFunc)();??
  14. ??
  15. int?main()?{??
  16. ??PFunc?f?=?&(A::test1);??
  17. ??
  18. ??(*f)();??
  19. ??
  20. ??system("PAUSE");??
  21. ??return?0;??
  22. }??

另外:靜態成員的初始化不受訪問控制的限制。 ? ? ? ? ? ? ?

根據C++primer所說,要想確保對象只定義一次,最好的辦法就是把靜態數據成員的定義和其他非內聯函數的定義放在同一個文件中。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457824.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457824.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457824.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Windows下C語言連接Oracle數據庫

為什么80%的碼農都做不了架構師&#xff1f;>>> 最近公司有個項目需要用到Oracle數據庫&#xff0c;我負責前期的調研。由于項目要用到C和PHP兩種語言&#xff0c;所以先收集這兩種語言連接Oracle的方法。PHP使用的是Laravel框架&#xff0c;直接使用了Laravel-OCI…

SU suspecfk命令學習

用suplane生成平面&#xff0c;并查看其FK譜&#xff0c; 水平反射界面經FK變換后&#xff0c;波數為0&#xff0c; 正好處于臨界&#xff0c;乃奎斯特頻率&#xff0c; 有空間假頻&#xff0c; Over&#xff0c;不足之處&#xff0c;歡迎批評指正。 轉載于:https://www.cnblog…

dblink查詢_分庫數據如何查詢統計

分庫后的計算不能直接使用SQL&#xff1b;異構庫 SQL 函數不盡相同&#xff1b;JAVA 硬編碼實施難度大&#xff1b;即使借助透明網關訪問遠程數據庫&#xff0c;分庫性能優化也是頭疼問題。一般常規辦法&#xff1a;方法1&#xff1a;java硬編碼簡單的跨庫count運算&#xff0c…

python 爬取大樂透開獎結果

#codingutf-8 #下面中文注釋不支持 所以開頭加 "#codingutf-8" # 獲取近期大樂透開獎結果, 并給出自己猜中的個數import requests# 這個API能夠免費得到近期開獎結果, url里的-20代表獲取近20期的開獎信息 url "http://f.apiplus.net/dlt-20.json" re…

【Python五篇慢慢彈(5)】類的繼承案例解析,python相關知識延伸

類的繼承案例解析&#xff0c;python相關知識延伸 作者&#xff1a;白寧超 2016年10月10日22:36:57 摘要&#xff1a;繼<快速上手學python>一文之后&#xff0c;筆者又將python官方文檔認真學習下。官方給出的pythondoc入門資料包含了基本要點。本文是對文檔常用核心要點…

課堂練習之小強大掃蕩

標題&#xff1a;在將程序安裝到新的手機上時會出現程序崩潰 解決&#xff1a;1、找出錯誤&#xff1a;經過一系列測試&#xff0c;發現問題出現在第一次訪問數據庫的代碼時報錯。錯誤原因為不能發現數據庫中的建立的表。 2、如何解決&#xff1a;在主頁面加入訪問數據庫語句。…

領域驅動設計:軟件核心復雜性應對之道_人人都可以領域驅動設計(一)

最近幾年&#xff0c;領域驅動設計&#xff08;Domain-Driven Design&#xff0c;DDD&#xff09;這個術語越來越多地出現在軟件工程師的視野里。對DDD不熟悉的人可能會覺得它是軟件領域里的一個新的概念&#xff0c;但是實際上&#xff0c;Eric Evans在十幾年前就已經提出了這…

linux 進程通信 消息隊列

詳解linux進程間通信-消息隊列 前言&#xff1a;前面討論了信號、管道的進程間通信方式&#xff0c;接下來將討論消息隊列。 一、系統V IPC 三種系統V IPC&#xff1a;消息隊列、信號量以及共享內存&#xff08;共享存儲器&#xff09;之間有很多相似之處。 每個內核中的 I P …

laravel框架——composer導入laravel

第一種&#xff1a;  composer create-project --prefer-dist laravel/laravel projectName "5.2.*"第二種&#xff1a;  composer global require "laravel/installer"  laravel new 名稱轉載于:https://www.cnblogs.com/xj76149095/p/5951822.html…

第七章 心得體會

通過第七章的學習&#xff0c;使自己對驅動程序的認識更加深刻&#xff0c;LED燈的驅動程序幫我我學到很多&#xff0c;還學會了驅動的移植。 學到的知識&#xff1a; 一、編寫LED驅動 1、創建LED驅動的設備文件 第一步&#xff1a;使用cdev_init函數初始化cdev leds_cdev.owne…

wx.checkjsapi是寫在config里面嗎_用Python寫一個程序,解密游戲內抽獎的秘密

前言本文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。作者&#xff1a; 極客挖掘機PS&#xff1a;如有需要Python學習資料的小伙伴可以加點擊下方鏈接自行獲取http://t.cn/A6Zvjdun分析需求我們先整理下思…

Dev C++安裝第三方庫boost

Dev_C安裝第三方庫boost 安裝步驟 準備工作下載boost庫&#xff0c;下載地址https://sourceforge.net/projects/boost/1. 設置GCC的環境變量PATH 設置環境變量path,在其中加上DEV-C編譯器的路徑&#xff08;gcc.exe所在路徑&#xff09;&#xff0c;如C:\Program Files (x86)…

bash的一些小技巧

1、從輸入讀入變量 eg:read -ep "input yes or no: " flag 用e選項表示編輯&#xff0c;可以使用backspace刪除 2、數組 a、索引數組 declare -a arr(var1 var2 var3) 用空格分割&#xff0c;如果直接訪問變量$arr&#xff0c; 則獲取的是數組的第一個元素&#xff0…

golang switch_為什么程序員都不喜歡使用 switch ,而是大量的 if……else if ?

點擊上方“我要學編程”&#xff0c;選擇“置頂/星標公眾號”福利干貨&#xff0c;第一時間送達&#xff01;來自 | C語言Plus請用5秒鐘的時間查看下面的代碼是否存在bug。OK&#xff0c;熟練的程序猿應該已經發現Bug所在了&#xff0c;在第13行下面我沒有添加關鍵字break; 這就…

RabbitMQ 安裝與簡單使用

在企業應用系統領域&#xff0c;會面對不同系統之間的通信、集成與整合&#xff0c;尤其當面臨異構系統時&#xff0c;這種分布式的調用與通信變得越發重要。其次&#xff0c;系統中一般會有很多對實時性要求不高的但是執行起來比較較耗時的地方&#xff0c;比如發送短信&#…

數據庫函數依賴及范式

一、基礎概念   要理解范式&#xff0c;首先必須對知道什么是關系數據庫&#xff0c;如果你不知道&#xff0c;我可以簡單的不能再簡單的說一下&#xff1a;關系數據庫就是用二維表來保存數據。表和表之間可以……&#xff08;省略10W字&#xff09;。   然后你應該理解以下…

windows svn

windows svn 1.1Svn和VisualSvn介紹 VisualSvn Server2.5.6&#xff08;版本控制服務器&#xff09;免費開源軟件 是基于Windows平臺上的Subversion服務器&#xff0c;它是免費的 官方下載&#xff1a; http://www.visualsvn.com/files/VisualSVN-Server-2.5.6.msi TortoiseSvn…

信息摘要技術及算法介紹

數據摘要算法是密碼學算法中非常重要的一個分支&#xff0c;它通過對所有數據提取指紋信息以實現數據簽名、數據完整性校驗等功能&#xff0c;由于其不可逆性&#xff0c;有時候會被用做敏感信息的加密。 數據摘要算法也被稱為哈希&#xff08;Hash&#xff09;算法、散列算法…

AutoLayout的那些事兒

AutoLayout非常強大也非常易用&#xff0c;可讀性也很強&#xff0c;加上各種第三方AutoLayout庫&#xff0c;讓你布起局來猶如繃掉鏈子的狗&#xff01;根本停不下來&#xff01;以前的 1label.frame.origin.y label.frame.size.height 10如今只用&#xff1a; 123button.sn…

docker-compose下載慢_編寫Docker Compose時要注意的五大常見錯誤

在構建容器化的應用時&#xff0c;開發人員往往需要某種方法來引導啟動目標容器&#xff0c;以對其進行代碼級別的測試。盡管業界有許多方法可以實現該目的&#xff0c;但Docker Compose是目前最受歡迎的一種方法。它能夠讓如下兩個方面變得容易實現&#xff1a;指定在開發過程…