指向类成员函数的指针
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;
}
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;
}
相关文章推荐
- 指向成员函数指针,虚函数指针,静态成员函数指针
- Item 16. 指向成员函数的指针
- 指向类数据成员、类成员函数的指针
- C++指向成员函数的指针
- OJ——指向基类的指针访问派生类的成员函数
- C++指向类成员函数的指针
- C++ Primer 指向成员函数的指针
- Item 16. 指向成员函数的指针
- 指向类成员函数的指针并非指针
- c++11 条款22:当使用Pimpl(指向实现的指针)时,在实现文件里定义特定的成员函数
- 指向类成员函数的指针
- C++指向类成员函数的指针详细解析
- 指向类成员函数的指针其实并非指针
- Item 16. 指向成员函数的指针
- 4.4 指向成员函数的指针
- C++中指向成员函数的指针
- 指向类成员和成员函数的指针
- vs2008下C++对象内存布局(6):指向成员函数的指针
- C/C++中为什么在类外利用多态基类指向派生类指针可以调用类的私有成员函数?
- 指向成员函数的指针