[英]() 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 ++没有用于调用函数的语法,或者在括号位于主表达式之前(在您的情况下为标识符)的情况下,因此没有语法,因此问题的答案为“否”。
不行 这是不可能的。 并非以理智,安全,符合标准的方式进行。
()
仅用于投射
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.