亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

詳解C++中的成員訪問運算符和指針到成員運算符

2020-05-23 14:10:56
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C++中的成員訪問運算符和指針到成員運算符,即. 和 ->以及.* 和 ->*的使用方法,需要的朋友可以參考下
 

成員訪問運算符:. 和 ->

語法

      postfix-expression 
      . name
postfix-expression –> name
備注
成員訪問運算符 . 和 -> 用來引用結構、聯合和類的成員。成員訪問表達式具有選定成員的值和類型。
有兩種形式的成員訪問表達式:
在第一種形式中,postfix-expression 表示結構、類或聯合類型的值,name 為指定的結構、聯合或類的成員命名。運算的值是 name 的值且為左值(如果 postfix-expression 是左值)。
在第二種形式中,postfix-expression 表示指向結構、聯合或類的指針,name 為指定的結構、聯合或類的成員命名。該值是 name 的值且是左值。 –> 運算符取消引用該指針。因此,表達式 e–>member 和 (*e).member(其中,e 表示指針)會產生相同的結果(重載運算符 –> 或 * 的情況除外)。
以下示例演示成員訪問運算符的兩種形式。

// expre_Selection_Operator.cpp// compile with: /EHsc#include <iostream>using namespace std;struct Date {  Date(int i, int j, int k) : day(i), month(j), year(k){}  int month;  int day;  int year;};int main() {  Date mydate(1,1,1900);  mydate.month = 2;    cout << mydate.month << "/" << mydate.day     << "/" << mydate.year << endl;  Date *mydate2 = new Date(1,1,2000);  mydate2->month = 2;  cout << mydate2->month << "/" << mydate2->day     << "/" << mydate2->year << endl;  delete mydate2;}

這樣的話出來的兩個值分別為:

2/1/19002/1/2000

指針到成員運算符:.* 和 ->*

 
語法

      expression .* expression
expression –>* expression
備注
指向成員的指針運算符(.* 和 –>*)返回表達式左側上指定的對象的特定類成員的值。右側必須指定該類的成員。下面的示例演示如何使用這些運算符:

// expre_Expressions_with_Pointer_Member_Operators.cpp// compile with: /EHsc#include <iostream>using namespace std;class Testpm {public:  void m_func1() { cout << "m_func1/n"; }  int m_num;};// Define derived types pmfn and pmd.// These types are pointers to members m_func1() and// m_num, respectively.void (Testpm::*pmfn)() = &Testpm::m_func1;int Testpm::*pmd = &Testpm::m_num;int main() {  Testpm ATestpm;  Testpm *pTestpm = new Testpm;// Access the member function  (ATestpm.*pmfn)();  (pTestpm->*pmfn)();  // Parentheses required since * binds            // less tightly than the function call.// Access the member data  ATestpm.*pmd = 1;  pTestpm->*pmd = 2;  cout << ATestpm.*pmd << endl     << pTestpm->*pmd << endl;  delete pTestpm;}Outputm_func1m_func1

結果分別為:

12

在前面的示例中,指向成員的指針 pmfn 用于調用成員函數 m_func1。另一個指向成員的指針 pmd 用于訪問 m_num 成員。
二元運算符 .* 將其第一操作數(必須是類類型的對象)與其第二操作數(必須是指向成員的指針類型)組合在一起。
二元運算符 –>* 將其第一操作數(必須是指向類類型的對象的指針)與其第二操作數(必須是指向成員的指針類型)組合在一起。
在包含 .* 運算符的表達式中,第一操作數必須是類類型且可訪問,而指向第二操作數中指定的成員的指針或可訪問類型的成員的指針明確從該類派生并且可供該類訪問。
在包含 –>* 運算符的表達方式中,第一操作數必須是第二操作數中指定的類型的“指向類類型的指針”或明確地從該類派生的類型。
考慮以下類和程序段:

// expre_Expressions_with_Pointer_Member_Operators2.cpp// C2440 expectedclass BaseClass {public:  BaseClass(); // Base class constructor.  void Func1();};// Declare a pointer to member function Func1.void (BaseClass::*pmfnFunc1)() = &BaseClass::Func1;class Derived : public BaseClass {public:  Derived(); // Derived class constructor.  void Func2();};// Declare a pointer to member function Func2.void (Derived::*pmfnFunc2)() = &Derived::Func2;int main() {  BaseClass ABase;  Derived ADerived;  (ABase.*pmfnFunc1)();  // OK: defined for BaseClass.  (ABase.*pmfnFunc2)();  // Error: cannot use base class to              // access pointers to members of              // derived classes.   (ADerived.*pmfnFunc1)();  // OK: Derived is unambiguously               // derived from BaseClass.   (ADerived.*pmfnFunc2)();  // OK: defined for Derived.}

指向成員的指針運算符 .* 或 –>* 的結果是在指向成員的指針的聲明中指定的類型的對象或函數。因此,在前面的示例中,表達式 ADerived.*pmfnFunc1() 的結果是指向返回 void 的函數的指針。如果第二操作數是左值,則此結果為左值。
System_CAPS_note注意
如果某個指向成員的指針運算符的結果是函數,則該結果只能用作函數調用運算符的操作數。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人av在线网址| 亚洲精品视频在线观看视频| 狠狠色香婷婷久久亚洲精品| 中文字幕最新精品| 亚洲欧美色图片| 亚洲午夜久久久久久久| 亚洲人成五月天| 国产精品99蜜臀久久不卡二区| 人体精品一二三区| 精品网站999www| 国产精品视频大全| 国产精品极品美女粉嫩高清在线| 日韩精品久久久久久久玫瑰园| 亚洲毛茸茸少妇高潮呻吟| 中文欧美日本在线资源| 欧美黑人xxxx| 亚洲欧美激情在线视频| 亚洲一区二区三区在线视频| 奇米四色中文综合久久| 色噜噜狠狠狠综合曰曰曰| 久久精品国产欧美亚洲人人爽| 成人乱色短篇合集| 亚洲毛片在线观看| 欧美日韩第一视频| 国产精品r级在线| 成人免费观看网址| 在线观看日韩www视频免费| 欧美激情高清视频| 欧美另类xxx| 日韩在线精品视频| 亚洲毛片在线观看| 欧美成人精品三级在线观看| 国产精品偷伦免费视频观看的| 精品久久久一区| 日韩免费电影在线观看| 国产一区二区激情| 日韩中文字幕精品视频| 91精品久久久久久久久久入口| 亚洲色图国产精品| 国模精品视频一区二区三区| 欧美性感美女h网站在线观看免费| 欧美精品性视频| 97国产精品免费视频| 亚洲xxxx做受欧美| 一区二区亚洲欧洲国产日韩| 粉嫩老牛aⅴ一区二区三区| 久久免费成人精品视频| …久久精品99久久香蕉国产| 国产精品视频网| 国产精品一区二区电影| 欧美在线播放视频| 96精品久久久久中文字幕| 亚洲国产精品成人一区二区| 亚洲人成电影在线观看天堂色| 国产91精品不卡视频| 亚洲第五色综合网| 97成人精品视频在线观看| 国产欧美久久久久久| 97精品国产91久久久久久| 国产成人精品优优av| 国产精品成人免费视频| 日韩欧美极品在线观看| 亚洲的天堂在线中文字幕| 国产精品久久中文| 欧美高清视频在线观看| 5566成人精品视频免费| 黑人巨大精品欧美一区二区免费| 国模精品视频一区二区三区| 国产精品99久久99久久久二8| 亚洲久久久久久久久久| 亚洲天堂一区二区三区| 91av免费观看91av精品在线| 亚洲国产精品电影在线观看| 亚洲毛茸茸少妇高潮呻吟| 午夜精品视频在线| 欧美极品在线视频| 一个人看的www欧美| 欧美老女人www| 亚洲成人a级网| 国产男女猛烈无遮挡91| 国产精品免费久久久| 亚洲性视频网站| 欧美另类极品videosbestfree| 色妞一区二区三区| 色狠狠av一区二区三区香蕉蜜桃| 日韩在线视频免费观看高清中文| 欧美猛男性生活免费| 亲爱的老师9免费观看全集电视剧| 国产精品自产拍高潮在线观看| 欧美裸体男粗大视频在线观看| 久热精品在线视频| 96国产粉嫩美女| 911国产网站尤物在线观看| 国产主播在线一区| 欧美日韩视频免费播放| 国产精品电影在线观看| 欧美性xxxx| 亚洲男人第一av网站| 亚洲高清在线观看| 欧美一区二区三区免费观看| 久久久久中文字幕| 国产欧美婷婷中文| 国产精品v日韩精品| 国产精品欧美日韩一区二区| 欧美一级片久久久久久久| 亚洲999一在线观看www| 久久精品成人欧美大片古装| 国产精品国语对白| 精品少妇v888av| 国产精品视频一| 亚洲网站在线播放| 97精品国产aⅴ7777| 欧美大码xxxx| 国产综合在线看| 欧美中文在线字幕| 国产精品中文久久久久久久| 亚洲国产精品电影| 日韩在线高清视频| 久久久av亚洲男天堂| 91免费看国产| 欧美精品在线视频观看| 亚洲国产精彩中文乱码av在线播放| 国内成人精品一区| 欧美成年人视频网站欧美| 亚洲国产天堂久久国产91| 国产精品偷伦免费视频观看的| 夜夜躁日日躁狠狠久久88av| 日韩精品视频在线观看网址| 91精品国产91| 日韩av片永久免费网站| 日韩国产精品一区| 国产精品∨欧美精品v日韩精品| 色婷婷**av毛片一区| 亚洲人成在线免费观看| 成人自拍性视频| 欧美精品激情blacked18| 国产成人亚洲精品| 97视频在线观看免费高清完整版在线观看| 九色精品美女在线| 欧美亚洲免费电影| 大桥未久av一区二区三区| 国产亚洲人成a一在线v站| 久久精品成人一区二区三区| 国产欧美va欧美va香蕉在线| 欧美巨大黑人极品精男| 亚洲色图18p| 国产精品稀缺呦系列在线| 少妇精69xxtheporn| 最近中文字幕2019免费| 影音先锋日韩有码| 亚洲人精选亚洲人成在线| 亚洲欧美日韩一区在线| 最近2019中文字幕在线高清| 成人网欧美在线视频| 亚洲免费人成在线视频观看| 欧美一区二区三区四区在线| 欧美大片第1页| 尤物tv国产一区| 在线观看欧美日韩国产| 欧美国产一区二区三区| 精品久久久精品| 欧美视频免费在线观看| 热久久免费国产视频| 91av在线不卡|