8_22.cpp
来自「C++语言程序设计案例教程,郑莉编的书」· C++ 代码 · 共 18 行
CPP
18 行
#include <iostream>
using namespace std;
class Base; //类Base的前置说明,满足下面定义语句的需要
void (Base::*pfm)(); //定义全局的void (Base::*)()型的指向成员函数的指针pfm
class Base
{ virtual void f()=0; //私有属性的纯虚函数f
public:
static void set(){pfm=&Base::f;}// 成员函数指针pfm指向私有的虚成员函数
};
class Derived:public Base{ void f(){cout<<"Derived::f();\n";} };
int main()
{ Derived objd; //定义派生类对象objd
Base*pobjb=&objd; //派生类对象地址向上映射到基对象指针
Base::set(); //调用静态成员函数,得到pfm=&Base::f;
(pobjb->*pfm)(); //等价于pObjb->f();
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?