2015-02-08 225 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 第一一个成员变量调用默认的构造和然后分配特定值到该成员。