C++对象模型和this指针

对象模型

非静态成员变量占用类对象空间
静态成员变量不占用类对象空间,而是占用全局区的空间
函数也不占用类对象空间,程序共享这个函数
每个空对象会占用一个内存地址,所以会分配一个字节的空间

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();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值