从其他帖子中读取代码,我看到了类似的内容。
struct Foo {
Foo() : mem(0) {}
int mem;
};
mem(0){}在这种情况下做了什么,特别是关于花括号?我以前从未见过这个,也不知道我会在哪里找到这个。我知道mem(0)会将mem初始化为0,但为什么{}?
感谢。
答案 0 :(得分:7)
由于Foo()
是类的构造函数,因此它必须具有正文,即使成员变量mem
在其外部初始化也是如此。
这就是为什么在你的例子中,构造函数有一个空体:
Foo() : mem(0)
{
// 'mem' is already initialized, but a body is still required.
}
答案 1 :(得分:2)
它定义了类的构造函数。冒号后面的部分是初始化列表,其中使用构造函数调用将mem
成员初始化为零。
比较
int a(0);
int b = 0;
这两个做的相同,但前者更符合C ++中对象构造的外观。
答案 2 :(得分:0)
int c ++你可以在.h文件中定义你的方法实现
class MyClass
{
public:
MyClass(){
.....
}
void doSomething(){
.....
}
~MyClass(){
.....
}
};
通常用于模板实现。您也可以使用这种类声明方法,以防您想要避免库链接,并且您希望向用户提供所有代码,这样他就可以包含您的文件,而无需将任何lib文件链接到他的项目。