Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ()左侧c+上的运算符重载+;_C++ - Fatal编程技术网

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

C++ ()左侧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(); } 我知道我可能永远都不需要这个,但我只是好奇它是否可能不,因为在()之前必须有

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

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

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

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

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

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


还请记住,编译器会将其向后读取,因此他不会知道这应该是一个函数。

。这是不可能的。不是以理智、安全、符合标准的方式 重载
操作符()
的目的是让类的对象参与函数调用表达式,其中对象表示被调用的函数。C++没有调用函数的语法,否则括号就在主表达式前面(在你的情况下是标识符),所以你的问题的答案是“否”。
  • 左侧的
    ()
    仅用于铸造
  • #雅格尼
  • ()dog;