() 左侧 C++ 上的运算符重载

() operator overloading on left side c++

本文关键字:运算符 重载 C++ 左侧      更新时间:2023-10-16

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

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 ()的目的是让类的对象参与函数调用表达式,其中对象表示正在调用的函数。C++没有用于调用函数的语法,也没有在主表达式(在您的情况下为标识符)之前使用括号的语法,因此问题的答案是"否"。

不,因为在()之前必须有一个主表达式。

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

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

  1. 左侧()仅用于铸造
  2. #YAGNI