operator 的兩種用法


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_)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM