Does curly brackets matter for empty constructor?
本问题已经有最佳答案,请猛点这里访问。
我想知道下面的构造函数对于C++是相同的吗?
1 2 3 4 5 6 | class foo { public: foo(void){}; ... } |
和
1 2 3 4 5 6 | class foo { public: foo(void); ... } |
花括号对这两种情况重要吗?多谢!
是的。第二个将生成
1 | foo()=default; |
定义编译器生成的构造函数
它们不一样。
1 2 | foo(void){}; // function definition foo(void); // function declaration |
这些括号声明一个空的内联构造函数。在这种情况下,有了它们,构造函数就存在了,它只不过做了构造函数不可能隐式做的事情。
在第二种情况下,如果没有它们,编译器将期望在其他地方实现,例如.cpp文件。
对。没有它只是一个声明。两者都是声明和定义。尝试使用它-如果没有定义,将出现链接器错误