欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C++指針怎么應(yīng)用

本篇內(nèi)容介紹了“C++指針怎么應(yīng)用”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)專注于善左企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,成都做商城網(wǎng)站。善左網(wǎng)站建設(shè)公司,為善左等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站策劃,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

成員函數(shù)指針的聲明

一個(gè)成員函數(shù)指針包括成員函數(shù)的返回類型,后隨::操作符類名,指針名和函數(shù)的參數(shù)。初看上去,語法有點(diǎn)復(fù)雜。其實(shí)可以把它理解為一個(gè)指向原函數(shù)的指針,格式是:函數(shù)返回類型,類名,::操作符,指針星號,指針名,函數(shù)參數(shù)。

一個(gè)指向外部函數(shù)的指針聲明為:

void (*pf)(char *, const char *);  void strcpy(char * dest, const char * source);  pf=strcpy;

一個(gè)指向類A成員函數(shù)的指針聲明為:

void (A::*pmf)(char *, const char *);

聲明的解釋是:pmf是一個(gè)指向A成員函數(shù)的指針,返回?zé)o類型值,函數(shù)帶有二個(gè)參數(shù),參數(shù)的類型分別是char * 和 const char *。除了在星號前增加A:: ,與聲明外部函數(shù)指針的方法一樣。

賦值

給成員指針賦值的方法是將函數(shù)名通過指針符號&賦予指針名。如下所示:

class A  {  public:   void strcpy(char *, const char *);   void strcat(char *, const char *);  };  pmf = &A::strcpy;

有些老的編譯器可以通過沒有&號的賦值方式,但標(biāo)準(zhǔn)C++強(qiáng)制要求加上&號。

使用類型定義

可以用類型定義來隱藏復(fù)雜的成員指針語法。例如,下面的語句定義了PMA是一個(gè)指向A成員函數(shù)的指針,函數(shù)返回?zé)o類型值,函數(shù)參數(shù)類型為char * 和 const char *:

typedef void(A::*PMA)(char *, const char *);  PMA pmf= &A::strcat; // pmf是PMF類型(類A成員指針)的變量

下文會看到使用類型定義特別有利于聲明成員指針數(shù)組。

通過成員指針調(diào)用成員函數(shù)

可以在不必知道函數(shù)名的情況下,通過成員指針調(diào)用對象的成員函數(shù)。例如,函數(shù)dispatcher有一個(gè)變量pmf,通過它調(diào)用類成員函數(shù),不管它調(diào)用的是strcpy()函數(shù)還是strcat()函數(shù)。指向外部原函數(shù)的指針和指向類成員函數(shù)的指針是有很大區(qū)別的。后者必須指向被調(diào)函數(shù)的宿主對象。因此,除了要有成員指針外,還要有合法對象或?qū)ο笾羔槨?/p>

現(xiàn)舉例做進(jìn)一步說明。假設(shè)A有二個(gè)實(shí)例,成員函數(shù)指針支持多態(tài)性。這樣在成員指針調(diào)用虛成員函數(shù)時(shí)是動態(tài)處理的(即所謂后聯(lián)編 - 譯注)。注意,不可調(diào)用構(gòu)造和析構(gòu)函數(shù)。示例如下:

A a1, a2;  A *p= &a1; //創(chuàng)建指向A的指針  //創(chuàng)建指向成員的指針并初始化  void (A::*pmf)(char *, const char *) = &A::strcpy;  //要將成員函數(shù)綁定到pmf,必須定義呼叫的對象。  //可以用*號引導(dǎo):  void dispatcher(A a, void (A::*pmf)(char *, const char *))  {   char str[4];   (a.*pmf)(str, “abc”); //將成員函數(shù)綁定到pmf  }  //或用A的指針表達(dá)方式指向成員指針:  void dispatcher(A * p, void (A::*pmf)(char *, const char *))  {   char str[4]; (p->*pmf)(str, “abc”);  }  //函數(shù)的調(diào)用方法為:  dispatcher(a, pmf); // .* 方式  dispatcher(&a, pmf); // ->* 方式

高級使用技巧

以上是成員函數(shù)的基本知識?,F(xiàn)在介紹它的高級使用技巧。

成員指針數(shù)組

在下例,聲明了一個(gè)含有二個(gè)成員指針的數(shù)組,并分配類的成員函數(shù)地址給成員指針:

PMA pmf[2]= {&A::strcpy, &A::strcat};

這樣的數(shù)組在菜單驅(qū)動應(yīng)用中很有用。選擇菜單項(xiàng)后,應(yīng)用將調(diào)用相應(yīng)的回叫函數(shù),如下所示:

enum MENU_OPTIONS { COPY, CONCAT };  int main()  {   MENU_OPTIONS option; char str[4];   //從外部資源讀取選項(xiàng)   switch (option)   {  case COPY:   (pa->*pmf[COPY])(str, “abc”);  break;  case CONCAT:   (pa->*pmf[CONCAT])(str, “abc”);   break;   //…   }  }

Const 類型的成員函數(shù)

成員指針的類型應(yīng)該與成員函數(shù)類型一致。上面例子中的pmf 可以指向A的任意函數(shù),只要該函數(shù)不是const類型。如下所示,如果將touppercase()的地址分配給pmf,將導(dǎo)致編譯出錯(cuò),因?yàn)閠ouppercase() 的類型是const。

Class A  {  public:   void strpcy(char *, const char *);   void strcat(char *, const char *);   void touppercase(char *, const char*) const;  };  pmf=&A::touppercase; //出錯(cuò),類型不匹配  //解決的方法是聲明一個(gè)const類型的成員指針:  void (A::pcmf)(char *, const char *) const;  pcmf=&A::touppercase; // 現(xiàn)在可以了

有些差勁的編譯器允許一個(gè)非const類型的成員指針指向const類型的成員函數(shù)。這在標(biāo)準(zhǔn)C++是不允許的。

“C++指針怎么應(yīng)用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

文章名稱:C++指針怎么應(yīng)用
標(biāo)題URL:http://chinadenli.net/article32/ieggsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、虛擬主機(jī)App設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司電子商務(wù)、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
欧美大黄片在线免费观看| 欧美午夜不卡在线观看| 99在线视频精品免费播放| 欧美日韩免费黄片观看| 国产亚洲中文日韩欧美综合网| 大香蕉网国产在线观看av| 99久久国产精品亚洲| 中文字幕精品一区二区三| 日本东京热加勒比一区二区| 五月婷婷综合缴情六月| 韩国日本欧美国产三级| 精品人妻一区二区三区四区久久| 亚洲乱码av中文一区二区三区| 日韩人妻毛片中文字幕| 美女黄色三级深夜福利| 久久99夜色精品噜噜亚洲av| 男女激情视频在线免费观看| 噜噜中文字幕一区二区| 中文字幕久久精品亚洲乱码| 日韩精品小视频在线观看| 亚洲一区二区三在线播放| 在线观看免费无遮挡大尺度视频| 国产精品色热综合在线| 亚洲欧美日韩在线中文字幕| 欧美一级日韩中文字幕| 国产不卡最新在线视频| 91精品国产综合久久不卡| 欧美成人一区二区三区在线| 久久夜色精品国产高清不卡| 成人午夜在线视频观看| 九九热精彩视频在线免费| 欧美大胆女人的大胆人体| 国内真实露脸偷拍视频| 亚洲人妻av中文字幕| 久久精品蜜桃一区二区av| 欧美日韩人妻中文一区二区| 美女被草的视频在线观看| 国产性色精品福利在线观看| 免费观看日韩一级黄色大片| 亚洲人妻av中文字幕| 亚洲中文字幕视频在线播放|