c++中的operator的作用

本文探讨了C++中operator的两种用法:操作符重载和隐式类型转换。通过对比demo类中的两种operator函数,解释了如何使用operator实现重载隐式转换。

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

今天在看effective c++的时候,看到了一个奇怪的用法

operator FontHandle()const{
	return f;
}

这一下把我整懵了,在我的脑子里operator只能用于操作符重载啊,乍一看还以为是重载(),仔细一看,这函数没有返回值类型,而且只有一个括号,然后写了两个demo对比了一下。

class demo {
public:
	demo(int a) :a(a) {}
	operator int()const {
		return a;
	}
	int operator()()const
	{
		return a;
	}
private:
	int a;
};

int main() {
	demo d(3);
	std::cout << d << std::endl;  //3
	std::cout << d() << std::endl; //3
}

通过两个对比发现,前面这个好像是隐式类型转换的效果。

问了问度娘

operator有两种用法

  • 一种是operator overloading(操作符重载)
  • 一种是operator casting(操作隐式转换)

C++可以通过operator实现重载隐式转换,格式如下: operator T ()

C++可以通过operator实现重载操作符,格式如下:类型T operator 操作符 ()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值