_thiscall调用约定的简单概念

本文介绍了C++中的_thiscall调用约定,它是类成员方法的调用方式。同时,详细阐述了this指针的概念,指出this指针在类成员方法调用中作为隐藏参数传递,指向实例化对象。通过实例说明了this指针如何在操作类成员变量时发挥作用,并强调this指针为常量且必须初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

_thiscall

我们知道在c中由三种调用约定:_cdecl,_stdcall和_fastcall,其中_stdcall调用约定是windows平台的。
在c++中还有一种约定:_thiscall调用约定,它是一种类成员方法调用约定。当我们说起_thiscall调用约定时,我们就不得不说一下this指针的概念了。

this指针

this指针,就是类成员方法在调用过程中的一个隐藏的参数,当我们实例化一个对象时,如果我们调用类中的类成员方法,我们就会将对象的地址传给this指针,也可以说是this指针指向了一个实例化的对象,在接下来的操作中都是this指针来调动对象中的类成员变量。
举个例子来说,我们写了一个商品类,并在调用点去调用类中的类成员方法,那类成员方法中的this指针就会指向这个调用点的地址:

#include <iostream>
class commodity
{
public:
	commodity(std::string name,float price,int num)
		:mname(name),mprice(price),mnum(num)
	{}
	int buy(/*commodity* const this*/int num)
	{
		mnum = num;
		mprice = mnum * mprice;
		return mprice;
	}
private:
	std::string mname;
	float mprice;
	int mnum;
};
int main()
{
	commodity p1("牛奶",3.5,2);
	std::cout <<"two milk's price is :"<< p1.buy(2) <<"$"<< std::endl;
	return 0;
}

打印结果如下:
在这里插入图片描述

需要注意的是:this指针是一个常量,this指针是一定要初始化的,而且它必须接受对象的地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值