() 运算符在左侧 C++ 重载
() operator overloading on left side c++
我有一个带有重载 () 运算符的 class:
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 ()
背后的目的是让 class 的对象参与函数调用表达式,其中您的对象代表被调用的函数。 C++ 没有调用函数的语法,也没有括号在主表达式(在你的例子中是标识符)之前的语法,所以你的问题的答案是 "no".
()
左侧仅供投射
- #亚格尼
我有一个带有重载 () 运算符的 class:
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 ()
背后的目的是让 class 的对象参与函数调用表达式,其中您的对象代表被调用的函数。 C++ 没有调用函数的语法,也没有括号在主表达式(在你的例子中是标识符)之前的语法,所以你的问题的答案是 "no".
()
左侧仅供投射- #亚格尼