#include <iostream>
using namespace std;
#if 0
指向类成员的指针
类 数据成员 函数成员
成员类型 类名::*指针名 = &类名::成员名
函数返回类型类类型(*函数指针)(参数列表) = &类型::成员函数名
对象
.* ->*
对象.*数据成员指针
对象指针->*数据成员指针
(对象.*数据成员指针)()
(对象指针->*数据成员指针)()
#endif
class Stu
{
public:
Stu(string sn, int ia)
:name(sn), age(ia)
{
}
void print()
{
cout<<name<<"--"<<endl;
}
public:
string name;
int age;
};
int main()
{
Stu s1("zhaosi", 39);
Stu s2("aobama", 79);
string Stu::*pn = &Stu::name;
//cout<<s1.*pn<<s2.*pn<<endl;//'.*'是在一起的,是一个新的运算符,意思是指向并解引用
void (Stu::*pf)() = &Stu::print;
(s1.*pf)();
(s2.*pf)();
Stu *pp = new Stu("nigulasi.zaosi", 60);
cout<<pp ->* pn<<endl;
(pp->*pf)();
return 0;
}