来自c ++的奇怪代码段

rub*_*buc 1 c++ constructor initializer-list

从其他帖子中读取代码,我看到的是这样的东西.

struct Foo {
  Foo() : mem(0) {}
  int mem;
};
Run Code Online (Sandbox Code Playgroud)

mem(0){}在这种情况下做了什么,特别是关于花括号?我以前从未见过这个,也不知道我会在哪里找到这个.我知道mem(0)会将mem初始化为0,但为什么{}?

谢谢.

Fré*_*idi 7

既然Foo()是类的构造函数,它必须有一个体,即使成员变量mem在它之外被初始化.

这就是为什么在你的例子中,构造函数有一个空体:

Foo() : mem(0)
{
    // 'mem' is already initialized, but a body is still required.
}
Run Code Online (Sandbox Code Playgroud)