C++ Primer 5th笔记(chap 19 特殊工具与技术)类成员指针
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 特殊工具与技术)类成员指针的主要内容,如果未能解决你的问题,请参考以下文章
C++ Primer 5th笔记(chap 19 特殊工具与技术)malloc 函数与 free 函数
C++ Primer 5th笔记(chap 19 特殊工具与技术)控制内存分配
C++ Primer 5th笔记(chap 19 特殊工具与技术)使用 RTTI
C++ Primer 5th笔记(chap 19 特殊工具与技术)typeid