日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++静态成员函数指针

發布時間:2023/12/20 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++静态成员函数指针 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

?

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

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

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

成員函數的類型定義為:

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

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

?使用:

? ? pfunc p = A::test;

?

示例:

[cpp]?view plain?copy

  • #include?<iostream>??
  • ??
  • using?namespace?std;??
  • ??
  • class?A?{??
  • ??
  • public?:??
  • ??void?test1()?{?cout?<<?"test"?<<?endl;?};??
  • public?:??
  • ??
  • };??
  • ??
  • typedef?void?(A::*PFunc)();??
  • ??
  • int?main()?{??
  • ??A?a;??
  • ??PFunc?f?=?&(A::test1);??
  • ??
  • ??(a.*f)();??
  • ??
  • ??system("PAUSE");??
  • ??return?0;??
  • }??
  • ?

    ?

    ?

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

    ?

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

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

    typedef void (*pfunc) ();

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

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

    ?

    示例:

    [cpp]?view plain?copy

  • #include?<iostream>??
  • ??
  • using?namespace?std;??
  • ??
  • class?A?{??
  • ??
  • public?:??
  • ??static?void?test1()?{?printf("test\n");?};??
  • public?:??
  • ??
  • };??
  • ??
  • typedef?void?(*PFunc)();??
  • ??
  • int?main()?{??
  • ??PFunc?f?=?&(A::test1);??
  • ??
  • ??(*f)();??
  • ??
  • ??system("PAUSE");??
  • ??return?0;??
  • }??
  • 另外:靜態成員的初始化不受訪問控制的限制。 ? ? ? ? ? ? ?

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

    總結

    以上是生活随笔為你收集整理的C++静态成员函数指针的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。