C++,有时它的确是个耐玩的东东,就比如operator,它有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换)。
1、操作符重载C++可以通过operator实现重载操作符,格式如下:类型T operator 操作符 (),比如重载+,比如下面这个例子template<typename T> class A{ public: const T operator+(const T& rhs) { return this->m_ + rhs; }private: T m_;};又比如STL中的函数对象,重载(),比如下面这个例子template<typename T> struct A{ T operator()(const T& lhs, const T& rhs){ return lhs-rhs; }};2、 操作隐式转换C++可以通过operator实现重载隐式转换,格式如下: operator T (),其中T是一个类型,比如下面这个例子class A{ public: operator B*() { return this->b_; } operator const B*() { return this->b_; } operator B&() { return *this->b_; }private: B* b_;};A a;当if(a),编译时,它转换成if(a.operator B*()),其实也就是相当于 if(a.b_)