我有一个重载 () 运算符的类:
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/