1、重载箭头操作符:
class Obj {
public:
Obj( Screen *p): ( new Scptr( p) ) {}
ScPtr operator->(){ return *ptr;}
const ScPtr operator->(){ return *ptr; }
private:
ScPtr *ptr;
}
2、调用操作符()和函数对象
原来()的名字叫函数调用操作符! 例如,abs( )
原来还有函数对象这种东西,对象可以看起来像函数一样!
函数对象,就是定义了调用操作符的类的对象:
class GT {
public:
GT(size_t val =0): bound(val) {}
bool operator()( const string& s )
{
return s.size() >= bound;
}
private:
std::string::size_type bound;
}
使用:
GT( 6);
count_if( words.begin(), words.end(), GT(i) );