2017-10-22 96 views
1

在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; 
    } 
}; 
+1

你试过吗?默认情况下,GCC和MSVC的新版本会接受'int x = 1;',并且Clang明确调用开启C++ 11支持。 – chris

+1

实际上,[CppCoreGuidelines建议使用类内初始化程序](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c48-prefer-in-class-initializers-to-member-initializers- in-constructors-for-constant-initializers)作为默认值。 – Justin

回答

3

既然C++ 11,你可以做到这一点。换句话说,这个工作很好:

class Foo 
{ 
    int x = 1; 
public: 
    int getX() { return x;} 
}; 
相关问题