“无运算符”运算符是什么?

时间:2020-09-30 06:53:48

标签: c++ operator-overloading

什么运算符重载将允许我执行此操作?是否有“无操作员”操作员?我知道要获得该值,我必须执行某种call(),但我想知道是否有可能清理它。

template<typename T>
class Stuff{
private:
  T stuff{};
public:
  T& operator () (){
  return stuff;
  }
  T& operator = (const T& val){
  stuff = val;
  return stuff;
  }
};

int main()
{
  int myInt = 0;
  Stuff<int> stuff;
  stuff = myInt;
  myInt = stuff(); // <- works
  myInt = stuff; // <- doesn't, is there a way to do it ?
}

1 个答案:

答案 0 :(得分:2)

是的,有一种方法:在Stuff中构建用户定义的转换函数:

operator T() const
{
    std::cout << "I'm here";
    return 0;     
}

由于myIntT类型,因此将在分配myInt = stuff中调用此函数。