重载括号 () 会影响构造函数调用吗?

nag*_*jan 6 c++ constructor operator-overloading

我对 () 运算符重载几乎没有疑问。我的问题是:

  1. 重载括号 () 会影响构造函数调用吗?
  2. 如果它会影响意味着我应该在我的构造函数/析构函数调用之前做一些前/后处理吗?
  3. 如果问题 2 是可能的意味着我应该预处理/后期处理哪些事情,哪些不应该?

如果你觉得这是任何其他问题的重复或不正确的提问方式,也可以在这里发表评论。提前致谢....

R S*_*ahu 4

问题:

重载括号()会影响构造函数调用吗?

不,不是的。该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.
Run Code Online (Sandbox Code Playgroud)