#include <iostream>

class Bar
{
public:
    int fun(int a, int b) {
        return a * 2 + b * b;
    }
};
int main(void)
{
    using namespace std;
    Bar b;
    Bar *pb = new Bar;
    // 声明一个指针 ptr,指向的类型是 Bar 的一个成员函数,
    // 该函数签名为 int (*ptr)(int, int);
    int (Bar::*ptr)(int, int);
    ptr = &Bar::fun;          // 将 Bar::fun 这个成员函数指针赋给 ptr
    // .* 操作符
    cout << (b.*ptr)(3, 4);   // 在对象 b 上使用该指针调用其对象的成员函数
    // ->* 操作符
    cout << (pb->*ptr)(1, 2); // 在对象指针 pb 上使用该指针调用其对象的成员函数
}


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


posts - 18, comments - 22, trackbacks - 0, articles - 7

Copyright © 紫雨轩 C++