在C++中,类内的成员变量和成员函数分开存储,只有非静态成员变量才属于类的对象上,占用对象的空间;
还有一点:如果是一个空对象也会占用一个字节空间,如果是非空对象会按实际的数据来分配空间。
然后这时候就遇到一个问题:每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码,这一块代码是如何区分那个对象调用自己的呢?这时就用到了this指针。
this指针指向被调用的成员函数所属的对象,this指针不需要定义,直接使用即可
this指针的用途:
1、当形参和成员变量同名时,可用this指针来区分 2、 在类的非静态成员函数中返回对象本身,可使用return *this 3、注意空指针访问的问题
#include<iostream>
#include <string>
using namespace std;
class Person
{
public:
Person(int age)
{
this->age = age;
}
Person& Addperson(Person p)
{
this->age += p.age;
return *this;
}
int showAge()
{
if(this == NULL)
{
return;
}
cout << "年龄:" << age << endl;
}
public:
int age;
};
void main()
{
Person p1(10);
Person p2(18);
p2.Addperson(p1).Addperson(p1).Addperson(p1);
cout << "P2:" << p2.age<< endl;
Person* p3 = NULL;
p3->showAge();
}
|