在学习C++primer时遇到的问题,不能理解,请教大家了…….

来源:百度知道 编辑:UC知道 时间:2024/06/11 05:09:32
C++primer第三版12.3.1预定义函数对象:P483页
class Int
{
public:
Int(int ival=0):_val(ival){}

int operator-() {return -_val;}
int operator%(int ival){return _val%ival;} ①

bool operator<(int ival){return _val<ival;} ②
bool operator!() {return _val==0;} ③
private:
int _val;
};

其他无关的若干声明……..
int ival1,ival2,ires;
Int Ival1,Ival2,Ires;

定义的两个函数模板,我们向其传递各种没有名字的函数对象。
template <class Funcobject,class Type>
Type UnaryFunc(Funcobject fob,const Type &val)
{return fob(val);}

template <class Funcobject,class Type>
Type BinaryFunc(Funcobject fob,const Type &val1, const Type &val2)
{return fob(val, val2);}

12.3.2算术函数对象P484页
求余:modulus<Type>
modulue<Int> IntModulus;
Ires=IntModulus(Ival1,Ival2); ④
ires=BinaryFunc(modulue<int>(),ival2,iva

我没有明白

intModulus() 只是一个函数
她怎么运用重载的%的有很多方法.
完全可以在函数里 return val1%val2 这不运用了重载的%了么..
第二个也是这样的问题

如果此时的_val=0 return _val==0 成立 .那么就返回true

也就是:

当_val不为0的时候 !_val=false
当_val为0的时候 !false=true

0也就是false

是这样理解么