花括号对空构造函数是否重要?

这个问题在这里已经有了答案:

  • 定义和声明有什么区别? 25个答案

  • 他们不一样。 {}代表一个规则的函数体,并且使之前的函数定义。

    foo(void){}; // function definition
    foo(void);   // function declaration
    

    是的,他们有。 第二个将生成undefined reference to foo::foo (除非在其他地方定义)。 如果您可以使用C ++ 11或更高版本,则可以使用

    foo()=default;
    

    定义一个编译器生成的构造函数


    这些括号声明了一个空的内联构造函数。 在那种情况下,对于它们来说,构造函数确实存在,它只不过是构造函数不会隐含的。

    在第二种情况下,如果没有它们,编译器会期望其他地方的实现 - 例如.cpp文件。

    链接地址: http://www.djcxy.com/p/40619.html

    上一篇: Does curly brackets matter for empty constructor?

    下一篇: What does a semicolon after a class name do?