国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

C++編程指向成員的指針以及this指針的基本使用指南

2020-01-26 14:44:44
字體:
來源:轉載
供稿:網友

指向成員的指針
指向成員的指針的聲明是指針聲明的特例。使用以下序列來聲明它們:

[storage-class-specifiers] [cv-qualifiers] type-specifiers [ms-modifier]qualified-name ::* [cv-qualifiers] identifier[= & qualified-name :: member-name];

聲明說明符:

  • 可選存儲類說明符。
  • 可選 const 和/或 volatile 說明符。
  • 類型說明符:類型的名稱。這是要指向的成員的類型,而不是類。

聲明符:

  • 可選的 Microsoft 專用修飾符。
  • 包含要指向的成員的類的限定名。
  • :: 運算符。
  • * 運算符。
  • 可選 const 和/或 volatile 說明符。
  • 命名指向成員的指針的標識符。

可選的初始值設定項:

  • = 運算符。
  • & 運算符。
  • 類的限定名。
  • :: 運算符。
  • 適當類型的類的非靜態成員的名稱。

像往常一樣,允許在單個聲明中使用多個聲明符(以及任何關聯的初始值設定項)。
指向類的成員的指針與普通指針不同,因為它有該成員的類型的類型信息和該成員所屬的類的類型信息。常規指針只標識內存中的一個對象或只具有其地址。指向類的某個成員的指針標識類的所有實例中的該成員。以下示例聲明類、Window 和一些指向成員數據的指針。

// pointers_to_members1.cppclass Window{public: Window();        // Default constructor. Window( int x1, int y1,     // Constructor specifying int x2, int y2 );      // window size.bool SetCaption( const char *szTitle ); // Set window caption. const char *GetCaption();    // Get window caption. char *szWinCaption;      // Window caption.};// Declare a pointer to the data member szWinCaption.char * Window::* pwCaption = &Window::szWinCaption;int main(){}

在前面的示例中,pwCaption 是一個指針,它指向具有 Windowchar* 類型的類 的任何成員。類型 pwCaption 不是 char * Window::*。下一個代碼片段將指針聲明為 SetCaption 和 GetCaption 成員函數。

const char * (Window::*pfnwGC)() = &Window::GetCaption;bool (Window::*pfnwSC)( const char * ) = &Window::SetCaption;

指針 pfnwGC 和 pfnwSC 分別指向 GetCaption 類的 SetCaption 和 Window。以下代碼直接使用指向成員 pwCaption 的指針將信息復制到窗口標題:

Window wMainWindow;Window *pwChildWindow = new Window;char *szUntitled = "Untitled - ";int cUntitledLen = strlen( szUntitled );strcpy_s( wMainWindow.*pwCaption, cUntitledLen, szUntitled );(wMainWindow.*pwCaption)[cUntitledLen - 1] = '1';  //same as//wMainWindow.SzWinCaption [cUntitledLen - 1] = '1';strcpy_s( pwChildWindow->*pwCaption, cUntitledLen, szUntitled ); (pwChildWindow->*pwCaption)[cUntitledLen - 1] = '2'; //same as //pwChildWindow->szWinCaption[cUntitledLen - 1] = '2';

.* 和

主站蜘蛛池模板: 松原市| 丹东市| 衡水市| 舞阳县| 浮山县| 拜泉县| 阿合奇县| 玉树县| 阳春市| 陆河县| 桐柏县| 大兴区| 衡南县| 石景山区| 德清县| 隆子县| 肥东县| 隆昌县| 外汇| 蛟河市| 青州市| 长岛县| 鄄城县| 象山县| 龙泉市| 莫力| 仪陇县| 新巴尔虎右旗| 泾川县| 辉县市| 永和县| 青州市| 积石山| 沂源县| 吴旗县| 顺平县| 定州市| 平凉市| 伊宁县| 曲麻莱县| 天峨县|