成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++成員函數(shù)指針詳細使用指南

開發(fā) 后端
C++成員函數(shù)指針的使用是比較復雜的一個操作過程。我們在這里將會為大家詳細介紹一下有關這方面的知識,以方便大家學習。

我們曾經(jīng)在一篇文章中為大家詳細介紹了有關C++函數(shù)指針的相關問題,那么今天大家將會進一步對這方面的知識有一個充分的掌握。在C++程序中,很多函數(shù)是成員函數(shù),即這些函數(shù)是某個類中的一部分。你不可以像一個普通的函數(shù)指針那樣指向一個成員函數(shù),正確的做法應該是,你必須使用一個成員函數(shù)指針。一個成員函數(shù)的指針指向類中的一個成員函數(shù),并和以前有相同的參數(shù),聲明如下:

 

  1. float (SomeClass::*my_memfunc_ptr)(int, char *); 

對于使用const關鍵字修飾的成員函數(shù),聲明如下:

 

  1. float (SomeClass::*my_const_memfunc_ptr)(int, char *) const; 

#t#注意使用了特殊的運算符(::*),而“SomeClass”是聲明中的一部分。C++成員函數(shù)指針有一個可怕的限制:它們只能指向一個特定的類中的成員函數(shù)。對每一種參數(shù)的組合,需要有不同的成員函數(shù)指針類型,而且對每種使用const修飾的函數(shù)和不同類中的函數(shù),也要有不同的函數(shù)指針類型。在MSVC中,對下面這四種調(diào)用方式都有一種不同的調(diào)用類型:

__cdecl, __stdcall, __fastcall, 和 __thiscall。

(__thiscall是缺省的方式,有趣的是,在任何官方文檔中從沒有對__thiscall關鍵字的詳細描述,但是它經(jīng)常在錯誤信息中出現(xiàn)。如果你顯式地使用它,你會看到“它被保留作為以后使用(it is reserved for future use)”的錯誤提示。)

如果你使用了C++成員函數(shù)指針,你***使用typedef以防止混淆。將函數(shù)指針指向型如float SomeClass::some_member_func(int, char *)的函數(shù),你可以這樣寫:

 

  1. my_memfunc_ptr = &SomeClass::some_member_func; 

很多編譯器(比如MSVC)會讓你去掉“&”,而其他一些編譯器(比如GNU G++)則需要添加“&”,所以在手寫程序的時候我建議把它添上。若要調(diào)用成員函數(shù)指針,你需要先建立SomeClass的一個實例,并使用特殊操作符“->*”,這個操作符的優(yōu)先級較低,你需要將其適當?shù)胤湃雸A括號內(nèi)。

 

  1. SomeClass *x = new SomeClass;  
  2. (x->*my_memfunc_ptr)(6, "Another Arbitrary Parameter"); 

 

如果類在棧上,你也可以使用“.*”運算符。

 

  1. SomeClass y;  
  2. (y.*my_memfunc_ptr)(15, "Different parameters this time"); 

 

不要怪我使用如此奇怪的語法——看起來C++的設計者對標點符號有著由衷的感情!C++相對于C增加了三種特殊運算符來支持成員指針。“::*”用于指針的聲明,而“->*”和“.*”用來調(diào)用指針指向的函數(shù)。這樣看起來對一個語言模糊而又很少使用的部分的過分關注是多余的。(你當然可以重載“->*”這些運算符,但這不是本文所要涉及的范圍。)

一個C++成員函數(shù)指針可以被設置成0,并可以使用“==”和“!=”比較運算符,但只能限定在同一個類中的成員函數(shù)的指針之間進行這樣的比較。任何成員函數(shù)指針都可以和0做比較以判斷它是否為空。與函數(shù)指針不同,不等運算符(<, >, <=, >=)對C++成員函數(shù)指針是不可用的。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-02-06 16:30:25

C++內(nèi)存對齊

2021-06-18 12:30:36

C++函數(shù)指針編程語言

2011-07-20 16:09:08

C++

2011-07-20 16:43:34

C++

2019-11-13 12:39:26

Python 開發(fā)編程語言

2011-07-20 17:54:02

C++

2011-07-15 01:20:58

C指針函數(shù)函數(shù)指針

2011-07-01 14:28:47

Qt 指針

2011-07-13 11:34:58

CC++時間函數(shù)

2015-05-19 11:11:29

JavaScript事件使用指南

2010-01-19 12:53:59

VB.NET Text

2024-02-01 12:09:17

Optional容器null

2024-02-28 09:03:20

Optional空指針Java

2009-08-21 15:16:23

C#使用指針

2010-01-21 14:19:44

C++靜態(tài)成員

2010-01-21 14:28:03

C++靜態(tài)成員函數(shù)

2022-09-29 09:07:08

DataGrip數(shù)據(jù)倉庫數(shù)據(jù)庫

2010-02-02 10:07:59

C++全局函數(shù)

2015-10-27 09:25:11

Vi編輯器使用指南

2010-01-19 13:43:59

C++函數(shù)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美三级视频 | 欧美一区二区视频 | 一区二区三区免费 | 天天人人精品 | 最新国产精品精品视频 | 91欧美激情一区二区三区成人 | 在线国产小视频 | 精品在线一区二区三区 | 亚洲精品一区二区三区 | 欧美成人hd | 男女羞羞视频在线 | 伊人狠狠干 | aaaaaaa片毛片免费观看 | 性大毛片视频 | 国产精品永久免费 | 天天操天天干天天曰 | 欧美成视频| 欧美影院| 亚洲精品视频二区 | 黄片毛片在线观看 | 九九热国产精品视频 | 一二三区视频 | 欧美一二区 | 国产精品久久久久久久久久久久久 | 国产精品一区二区久久久久 | 亚州综合在线 | 欧洲视频一区二区 | 欧美激情综合色综合啪啪五月 | 免费黄网站在线观看 | 18av在线播放| 日韩波多野结衣 | 亚洲国产成人久久久 | 国产乱码精品一区二三赶尸艳谈 | 日日久| 午夜影院毛片 | 久久久激情| 国产高清区 | 亚洲国产精品视频一区 | 91精品国产91久久久久久丝袜 | 一区二区不卡视频 | 午夜午夜精品一区二区三区文 |