调用运算符和转换运算符--两个容易混淆的运算符

本文介绍了C++中重载调用操作符()的应用,通过示例展示了如何将类的对象作为函数对象使用,以及如何重载转换操作符实现类对象到基本类型的转换。

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

***************************************************************************** 
重载调用操作符 () // 也称函数对象 
定义了调用操作符 () 的类,其对象常称为函数对象,它比函数更加灵活和方便 
函数对象常用于通用算法的实参 
可以为类的对象重载调用操作符 () ,如用结构实现的求绝对值的结构 
struct abs_int
{
int operator()(int val){return val<=0?-val:val;}
}; 
//如程序任务是返回长度是大于指定 6 个字符长度的函数的类 
class GT_cls
{
public:
 GT_cls(size_t val=0):bound(val){} // 构造函数,初始化私有成员 bound=0;
 bool operator()(const string &s){return s.size()>=bound;} 
private:
 std::string szice_type bound;
}; 
//当我们在使用此类时,就可以非常方便的使用 
GT_cls(5);
GT_cls(6);
GT_cls(7); 

***************************************************************************** 
重载转换操作符 operator (type)
引言 
我们在操作 int,double 混合数据时 ,C++ 可以默认转换数据类型也可以强制进行类型转换 
重载转换操作符就是为了方便对类产生的对象进行转换操作,它必须是成员函数实现 
类的类型转换只能应用于一个转换,不能连续进行转换操作 
 
语法格式 
operator type() const {return type;}
如 operator int() const {return val;}// 转换为 int
如 operator float() const {return val;}// 转换为 float 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值