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;
}