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

标签 c++

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

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++ 没有用于调用函数的语法,或者括号位于主表达式(在您的情况下为标识符)之前的语法,因此您的问题的答案是“否”。

关于c++ - () 运算符在左侧 C++ 重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27742134/

相关文章:

c++ - 如何在另一个项目的dll中添加调用函数

c++ - 我如何使用 C++ 和 boost 创建看门狗定时器

c++ - 更快地获取Linux中包含500万个文件的目录所占用的总空间的方法

c++ - Qt 主窗口崩溃

c++ - 使用natvis的循环双链表可视化

c++ - 结构大小与 typedef 版本不同?

c++ - C++的语法歧义

c++ - C++ 中的转换错误

c++ - 不同进程之间交换和存储值

c# - P/从 C# 调用 C++ template<T> 方法