我想知道以下构造函数是否与C++相同:
class foo
{
public:
foo(void){};
...
}
Run Code Online (Sandbox Code Playgroud)
和
class foo
{
public:
foo(void);
...
}
Run Code Online (Sandbox Code Playgroud)
大括号对这两种情况有影响吗?非常感谢!
他们不一样.{}表示一个常规的函数体,并使前一个函数定义.
foo(void){}; // function definition
foo(void); // function declaration
Run Code Online (Sandbox Code Playgroud)
是的他们这样做.第二个将生成undefined reference to foo::foo(除非在另一个地方定义).如果您可以使用C++ 11或更高版本,则可以使用
foo()=default;
Run Code Online (Sandbox Code Playgroud)
定义编译器生成的构造函数
| 归档时间: |
|
| 查看次数: |
477 次 |
| 最近记录: |