对象指针,this指针

#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;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务