C ++关于默认构造函数的问题

时间:2009-01-14 19:27:30

标签: c++ class

打电话给这样的课是什么意思:

class Example
{
 public: 
  Example(void);
  ~Example(void);
}

int main(void)
{
 Example ex(); // <<<<<< what is it called to call it like this?

 return(0);
}

在这种情况下似乎没有调用默认构造函数。有人可以说明为什么会这么糟糕吗?

感谢所有答案。

4 个答案:

答案 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