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

xxk*_*kkk 1 c++

我想知道以下构造函数是否与C++相同:

class foo
{ 
public:
   foo(void){};
...
}
Run Code Online (Sandbox Code Playgroud)

class foo
{
public:
   foo(void);
...
}
Run Code Online (Sandbox Code Playgroud)

大括号对这两种情况有影响吗?非常感谢!

son*_*yao 6

他们不一样.{}表示一个常规的函数体,并使前一个函数定义.

foo(void){}; // function definition
foo(void);   // function declaration
Run Code Online (Sandbox Code Playgroud)


use*_*329 6

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

foo()=default;
Run Code Online (Sandbox Code Playgroud)

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