您的位置:首页 > 编程语言 > C语言/C++

指向类成员函数的指针

2017-11-16 14:31 274 查看
#include <iostream>
using namespace std;
//指向类成员函数的指针 
class Student{
 public:
Student(string n, int nu):name(n),num(nu){}
void dis(){
 cout<<"name "<<name<<" num "<<num<<endl;
}
 private:
string name;
int num;
};
int main(){
Student s("zhangsan",1002);
Student s1("lisi",1001);
//指向非静态成员函数时,必须用类名作限定符,使用时则必须用类的实例作限定符 
Student *ps = new Student("lisi",1003);
/*
1.定义:<数据类型>(<类名>::*<指针名>)(<参数列表>)
    2.赋值&初始化: <数据类型>(<类名>::*<指针名>)(<参数列表>)[=&<类名>::<非静态成员函数>]
*/ 
void (Student::*pf)() = & Student::dis;
/*

3.解用引
   由于类不是运行时存在的对象。
   因此,在使用这类指针时,需要首先指定类的一个对象,然后,通过对象来引用指针所指向的成员。
   (<类对象名>.*<指向非静态成员函数的指针>)(<参数列表>)
   (<类对象指针>->*<指向非静态成员函数的指针>)(<参数列表>)
*/ 

(s.*pf)();
(s1.*pf)();
(ps->*pf)();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++