2017-10-22 100 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;} 
}; 
相關問題