繁体   English   中英

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

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

不行 这是不可能的。 并非以理智,安全,符合标准的方式进行。

  1. 左侧的()仅用于投射
  2. #YAGNI

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM