成员变量和成员函数分开存储

  • 只有非静态的成员变量才属于类的对象

  • C++编译器会给每个空对象分配一个字节的内存空间,是为了区分空对象占内存的位置,每个空对象都有一个唯一的内存地址

  • 静态成员变量和静态成员函数、非静态成员函数都不属于类的对象上

this指针

  • 由于非静态成员函数只会诞生一份函数实例,多个同类型的对象共用一块代码
  • C++通过this指针,区分是哪个对象在调用这个非静态成员函数
  • this指针指向被调用的成员函数所属的对象

用途:

  • 当形参和成员变量同名时,可用this指针来区分

  • 在类的非静态成员函数中返回对象本身,可使用return *this

    Person& addAge(Person &p){
    	this->age+=p.age;
        return *this;
    }
    
    int main(){
    	Person p(10);
        p.addAge(10).addAge(10);//链式编程
    }