() 运算符在左侧 C++ 重载

() operator overloading on left side c++

我有一个带有重载 () 运算符的 class:

class Animal
{
public:
    string sound;
    Animal (string a): sound(a) {}

void operator()()
  {
    cout<<sound<<endl;
  }
};

int main()
{
    Animal dog("hau hau");
    dog();
} 

但是,我有没有可能得到与左侧 () 相同的结果?

()dog;

我知道我可能永远不需要这个,但我只是好奇它是否可能

不行,因为().

前必须有一个主表达式

还要记住,编译器会反向读取它,所以他不会知道这应该是一个函数。

。这不可能。不是以一种理智、安全、符合标准的方式。

不,你不能那样做:C++ 中没有这样的结构的语法。

重载 operator () 背后的目的是让 class 的对象参与函数调用表达式,其中您的对象代表被调用的函数。 C++ 没有调用函数的语法,也没有括号在主表达式(在你的例子中是标识符)之前的语法,所以你的问题的答案是 "no".

  1. ()左侧仅供投射
  2. #亚格尼