【问题标题】:C++ Question about default constructor [duplicate]关于默认构造函数的C ++问题[重复]
【发布时间】:2010-10-01 10:54:10
【问题描述】:

这样调用类是什么意思:

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

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

 return(0);
}

在这种情况下,它似乎没有调用默认构造函数。有人能给出一个不好的理由吗?

感谢所有回答。

【问题讨论】:

标签: c++ class


【解决方案1】:

目前您正尝试像这样调用默认构造函数。

Example ex();

这实际上并没有调用默认构造函数。相反,您正在定义一个返回类型为 Example 且不带参数的函数原型。为了调用默认构造函数,省略()的

Example ex;

【讨论】:

  • 不是函数指针(即Example (*ex)()),而是函数原型。
  • @Konrad,感谢您的更正
【解决方案2】:

这为名为@9​​87654321@ 的函数声明了一个函数原型,返回一个Example!您没有在此处声明和初始化变量。

【讨论】:

    【解决方案3】:

    它甚至可以编译吗?无论如何,请参阅this related topic

    【讨论】:

    • 相关?我自己称它为复制品。
    【解决方案4】:

    如前所述,Example ex(); 声明了一个函数原型。不是任何人所期望的。这个 C++ 缺陷将由新的 C++0x 标准修复。将来首选语法将是Example ex{};。新制服结构还有许多其他不错的功能,请参阅更多here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-05
      • 2020-05-19
      • 1970-01-01
      • 2020-05-14
      • 2013-11-06
      • 1970-01-01
      • 2015-07-24
      相关资源
      最近更新 更多