代码之家  ›  专栏  ›  技术社区  ›  Daniel

关于默认构造函数[复制]的C++问题

  •  5
  • Daniel  · 技术社区  · 16 年前

    这样的类意味着什么:

    class Example
    {
     public: 
      Example(void);
      ~Example(void);
    }
    
    int main(void)
    {
     Example ex(); // <<<<<< what is it called to call it like this?
    
     return(0);
    }
    

    在这种情况下,它似乎没有调用默认的构造函数。有人能解释一下为什么那样会很糟糕吗?

    谢谢你的回答。

    4 回复  |  直到 16 年前
        1
  •  16
  •   JaredPar    16 年前

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

    Example ex();
    

    这实际上不是调用默认构造函数。相反,您使用返回类型示例定义了一个函数原型,并且不使用任何参数。为了调用默认构造函数,省略()的

    Example ex;
    
        2
  •  8
  •   Konrad Rudolph    16 年前

    这将为名为 ex 返回一个 Example !你是 在此声明和初始化变量。

        3
  •  4
  •   Community CDub    8 年前

    它甚至可以编译吗?无论如何,看到 this related topic .

        4
  •  2
  •   deft_code    16 年前

    如前所述 Example ex(); 声明函数原型。这不是任何人所期望的。这个C++疣将被新的C++ 0x标准所固定。将来,首选的语法将是 Example ex{}; . 新的制服结构还有许多其他的优点,更多信息请参见 here .