C++ Primer 5th笔记(chap 19 特殊工具与技术)类成员指针
生活随笔
收集整理的這篇文章主要介紹了
C++ Primer 5th笔记(chap 19 特殊工具与技术)类成员指针
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 成員指針( pointer to member)
指可以指向類的非靜態成員的指針。
- 成員指針指示的是類的成員, 而非類的對象。
- 類的靜態成員不屬于任何對象, 因此無須特殊的指向靜態成員的指針
- 指向靜態成員的指針與普通指針沒有什么區別。
成員指針的類型囊括了類的類型以及成員的類型。 當初始化一個這樣的指針時, 我們令其指向類的某個成員, 但是不指定該成員所屬的對象;
class Screen { public:typedef std::string::size_type pos;char get_cursor() const { return contents[cursor]; }char get() const;char get(pos ht, pos wd) const; private:std::string contents;pos cursor;pos height, width; };1.1 數據成員指針
eg. 一個指向 Screen 類的 const string 成員的指針 / / pdata 可以指向一個常量 ( 非常量 ) Screen 對象的 string 成員 const string Screen::*pdata;初始化一個成員指針 pdata = &Screen::contents;聲明成員指針: auto pdata = &Screen::contents;1.2 使用數據成員指針
Screen myScreen, *pScreen = &myScreen; // .*解引用 pdata 以獲得 myScreen 對象的 contents 成員 auto s = myScreen.*pdata; // -> 解引用pdata 以獲得 pScreen 對象的 contents 成員 s = pScreen->*pdata;1.3 返回數據成員指針的函數
最好定義一個函數, 令其返回值是指向該成員的指針
class Screen { public:// data是一個靜態成員, 返回一個成員指針static const std::string Screen::*data(){ return &Screen::contents; } }// 我們調用data函數時, 將得到一個成員指針 // data()返回一個指向Screen類的contents成員的指針 const string Screen::*pdata = Screen::data();// pdata指向Screen類的成員而非實際數據, 要想使用pdata必須把它綁定到Screen類型的對象上 auto s = myScreen.*pdata;總結
以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 19 特殊工具与技术)类成员指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EOS 智能合约源代码解读 (11)wr
- 下一篇: C++ Primer 5th笔记(cha