问题引入
class Person
{
public:
int _age;
int _sex;
char* _name;
void work()
{
cout << _name << " work ." << endl;
}
void eat()
{
cout << _name << " eat." << endl;
}
};
int main()
{
Person p1;
Person p2;
//char* name = "zhangsan";//错误,zhangsan的类型是const char*,不能将常量赋值给一个非常量
char name1[] = { "zhangsan" };
char name2[] = { "lisi" };
p1._name = name1;
p2._name = name2;
p1.work();
p2.work();
//编译期如何分清是谁在调用函数呢?
//在调用成员函数时编译期会自动传入对象的地址,函数的实质是void work(Person* const this, ...)
return 0;
}
this指针
- 指向本对象的指针
- 普通成员方法的第一个参数,默认加上this指针,例如void work(Person* const this,...)
- 在普通成员方法内使用到普通成员的地方,加上this指针的解引用(this->)
- 在调用成员方法的时候加上参数this的指针
- 上述这些都是在编译期时加上的
|