我对()运算符重载的查询很少。我的问题是:
如果你觉得这是任何其他问题的重复或者没有正确的方式问这个意思也在这里评论。提前谢谢....
答案 0 :(得分:3)
问题:
是否重载parenthesis()效果构造函数调用?
不,它没有。 operator()
函数可以与对象一起使用。构造函数使用类/结构名称。例如:
struct Foo
{
Foo() {}
int operator()(){return 10;}
};
Foo foo = Foo(); // The constructor gets called.
foo(); // The operator() function gets called.
Foo foo2 = foo(); // Syntax error. Cannot use the return value of foo()
// to construct a Foo.
int i = foo(); // OK.
答案 1 :(得分:2)
它不会干扰构造函数调用。原因是构造函数调用适用于类型或,而构建实例,而operator()
适用于已经构造了类型的实例。
示例:
struct A
{
A(int) {}
void operator()(int) {}
};
int main()
{
A(42); // calls the constructor A::A(int)
A a(42); // also calls A::A(int)
a(42); // calls A::operator(int)
}