C++类中的this指针

来源:互联网 发布:男友几把粗的体验知乎 编辑:程序博客网 时间:2024/06/05 23:07


1、类中this指针就是当前对象的地址(类成员函数的默认的第一个隐含参数)

可以在下面的例子中得到结论

#include <iostream>typedef struct student{char num[20];char name[20];int age;}*pstudent;void SetStudent(student* pf, char* num, char* name, int age){strcpy(pf->num, num);strcpy(pf->name, name);pf->age = age;}int main(){student s1;student s2;memset(&s1, 0, sizeof(student));memset(&s2, 0, sizeof(student));SetStudent(&s1, "0000001", "zhangsan", 20);SetStudent(&s2, "0000002", "lisi", 217);return 0;}



#include <iostream>class student{public:void SetStudent(char* num, char* name, int age){strcpy(_num, num);strcpy(_name, name);_age = age;}private:char _num[20];char _name[20];int _age;};int main(){student s1;student s2;s1.SetStudent("0000001", "zhangsan", 20);s2.SetStudent("0000002", "lisi", 21);system("pause");return 0;}



可以看出类成员函数的默认的第一个隐含参数

并且this是const修饰的不可修改其指向  


2、this指针不是类的一部分,并且空类的sizeof()的结果为1

#include <iostream>class student{public:void print(){}private:};int main(){student s1;printf("%d\n", sizeof(s1));system("pause");return 0;}


3、this指针可以为空

#include <iostream>using namespace std;class student{public:void print(){cout << this << endl;}private:};int main(){student* pf = NULL;pf->print();system("pause");return 0;}



原创粉丝点击