operator 的两种用法

Posted 前列腺钙化

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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_)

以上是关于operator 的两种用法的主要内容,如果未能解决你的问题,请参考以下文章

C++中operator用法

Kubernetes Redis 高可用方案

C++,关于operator的详细总解,(原理和用法)

关于python中的operator.itemgetter()函数的用法

每天5分钟玩转Kubernetes | Prometheus Operator

rtt operation用法