C++的类变量可以在没有构造函数的情况下初始化吗?
问题描述:
在Java中,我可以创建一个类,初始化的变量,而不构造函数:C++的类变量可以在没有构造函数的情况下初始化吗?
public class Foo {
private int x = 1;
public getx() {
return x;
}
}
但在C++,来完成同样的事情,我知道如何做到这一点的唯一方法:
class Foo
{
private:
int x;
public:
Foo()
{
x = 1;
}
getx()
{
return x;
}
};
答
既然C++ 11,你可以做到这一点。换句话说,这个工作很好:
class Foo
{
int x = 1;
public:
int getX() { return x;}
};
你试过吗?默认情况下,GCC和MSVC的新版本会接受'int x = 1;',并且Clang明确调用开启C++ 11支持。 – chris
实际上,[CppCoreGuidelines建议使用类内初始化程序](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c48-prefer-in-class-initializers-to-member-initializers- in-constructors-for-constant-initializers)作为默认值。 – Justin