*****************************************************************************
重载调用操作符 () // 也称函数对象
定义了调用操作符 () 的类,其对象常称为函数对象,它比函数更加灵活和方便
函数对象常用于通用算法的实参
可以为类的对象重载调用操作符 () ,如用结构实现的求绝对值的结构
*****************************************************************************
重载转换操作符 operator (type)
引言
我们在操作 int,double 混合数据时 ,C++ 可以默认转换数据类型也可以强制进行类型转换
重载转换操作符就是为了方便对类产生的对象进行转换操作,它必须是成员函数实现
类的类型转换只能应用于一个转换,不能连续进行转换操作
语法格式
operator type() const {return type;}
如 operator int() const {return val;}// 转换为 int
如 operator float() const {return val;}// 转换为 float
重载调用操作符 () // 也称函数对象
定义了调用操作符 () 的类,其对象常称为函数对象,它比函数更加灵活和方便
函数对象常用于通用算法的实参
可以为类的对象重载调用操作符 () ,如用结构实现的求绝对值的结构
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