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