C++中操作符operator的兩種用法
1.operator overloading
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 operator casting
C++可能通過operator 過載隱式轉換,格式如下: operator 型別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_)