打电话给这样的课是什么意思:
class Example
{
public:
Example(void);
~Example(void);
}
int main(void)
{
Example ex(); // <<<<<< what is it called to call it like this?
return(0);
}
在这种情况下似乎没有调用默认构造函数。有人可以说明为什么会这么糟糕吗?
感谢所有答案。
答案 0 :(得分:16)
目前您正在尝试调用默认构造函数。
Example ex();
这实际上并没有调用默认构造函数。相反,您正在定义一个返回类型为Example且不带参数的函数原型。为了调用默认构造函数,省略()的
Example ex;
答案 1 :(得分:8)
这声明了一个名为ex
的函数的函数原型,返回Example
!您不在此处声明并初始化变量。
答案 2 :(得分:4)
它甚至可以编译吗?无论如何,请参阅this related topic。
答案 3 :(得分:2)
如前所述,Example ex();
声明了一个函数原型。不是人们所期望的。这个C ++ wart将由新的C ++ 0x标准修复。将来,首选语法为Example ex{};
。新的统一结构还有许多其他不错的功能,请参阅更多here。