#include <iostream>
using namespace std;
class student {
string name;
int id;
char gender;
public:
student(string a, int b, char c) : name(a), id(b), gender(c) {}
//private对象成员只有类声明中的成员函数才可以访问,不能在主函数中通过成员运算符访问.。
//构造函数需要为public才能利用初始化。也就是student s1("SFE",45,'a');
void en();
};
//this指针
/*
* 成员函数储存在对象外所在的内存的空间
* 不同的函数调用成员函数都是得到同一个地址
* c++编译系统为了实现这个操作,内部隐式使用了一个指向正在调用成员函数的对象的 对象指针this
* 列如编译系统对en()成员函数处理如下
* void student::en(student *this)
* {
* cout<<this->name-<<this->id;
* }
*/
void student::en() {
cout << name << id;
}
int main() {
student s1("dsfa", 45, 'j');
student *p1;
p1 = &s1;
p1->en();
void (student::*p)() =&student::en;//定义指向对象成员函数的指针。
// 成员函数类型 (类名 :: *指针变量名)()=&s类名::成员函数名;
(s1.*p)();//函数使用
//成员运算符优先级高于指针运算符;
return 0;
}