构造函数在这里被调用了吗?

时间:2011-03-21 18:27:06

标签: c++ visual-c++ c++11

#include<iostream>

class _ctor
{
public:
_ctor() { std::cout<<"\nCtor";}
~_ctor(){ std::cout<<"\nDtor";}
};

_ctor A(); // --> Is the Constructor Really called? I do not see the Output printed
//_ctor A;

int main(){
return 0;
}

上面代码的输出在此Link中给出 我没有看到构造函数被调用,可能是什么问题?如果不应该调用那么这意味着什么_ctor A();

4 个答案:

答案 0 :(得分:10)

您声明了一个名为A()的函数,该函数返回_ctor,您从未调用过该函数。你甚至从未定义过这个功能。

不,没有调用_ctor的构造函数。

答案 1 :(得分:5)

不,因为您实际上声明了一个不带参数的函数并返回_ctor。这叫做"the most vexing parse."你可能想要这个:

_ctor A;

答案 2 :(得分:1)

您正在声明一个名为A的函数,该函数返回一个ctor类对象,因此不会调用构造函数。

如果你想创建一个ctor类的全局对象,你可以这样做:

_ctor A;

调用构造函数。

答案 3 :(得分:0)

要使构造函数能够调用,程序需要实例化类_ctor

_ctor A();

上述语句是函数A()的原型,表示它的返回类型为_ctor