对象模型
非静态成员变量占用类对象空间
静态成员变量不占用类对象空间,而是占用全局区的空间
函数也不占用类对象空间,程序共享这个函数
每个空对象会占用一个内存地址,所以会分配一个字节的空间
this指针
指向调用这个成员函数的类
作用:
一、区分形参和本类
class phone{
string name;
string getName(string name){
//name=name;//会导致问题
this->name = name;//this指向本类,很好的做了区分
}
}
二、作为成员函数的返回值
class phone{
int num;
phone& getName(int num){//引用方式返回,返回的还是原来那个p而不是拷贝出来的新的p
this->num += num;
return *this;
}
}
void main(){
phone p;
p.getName(10).getName(10);// p.getName(10)返回的还是p,所以可以继续使用成员函数,最后变量p.num = 20
}
三、空指针调用成员函数
class phone{
int num;
void dayin(){
cout<<"你好"<<endl;//没问题
cout<<num<<endl;//有问题,因为num在这里其实是this->num,this为空,所以会有访问权限的问题
//一般这么写
if(this != NULL)
cout<<num<<endl; }
}
void main(){
phone *p= NULL;
p->dayin();
}