2015-02-08 220 views
-6

爲什麼這3個結果? 我不會拒絕什麼「Class1():a(3)」的含義。操作員超載()

class Class1 
{ 
private: 
    int a; 
public: 
    Class1() :a(3) 
    {  
    }; 

    Class1(int f) 
    { 
     a = (int)f; 
    }; 
}; 

這是主要

int main(void) 
    { 
     Class1 c11; 
     c11.print(); 
    } 
+0

打開任何好的初學者的C++書籍,它會解釋什麼成員初始化名單。 – rightfold 2015-02-08 15:01:16

回答

1

這是一個"member initializer list"。成員變量int a只是初始化爲的值爲3。將值分配給a內構造函數將是賦值

初始化器列表初始化成員變量(通過自己或父類的構造函數)。如果列表中不包含成員變量,則默認初始化爲,即調用其默認構造函數,即對於類型爲int的成員變量,初始化值爲0

結論:

初始化在構造itsself 第一一個成員變量調用默認的構造和然後分配特定值到該成員。