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

***************************************************************************** 
重载调用操作符 () // 也称函数对象 
定义了调用操作符 () 的类,其对象常称为函数对象,它比函数更加灵活和方便 
函数对象常用于通用算法的实参 
可以为类的对象重载调用操作符 () ,如用结构实现的求绝对值的结构 
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 

你可能感兴趣的:(调用运算符和转换运算符--两个容易混淆的运算符)