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