#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();
?
答案 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
。