运算符重载()

时间:2015-02-08 14:55:48

标签: c++

为什么这个3的结果? 我不会忽略" Class1():a(3)"装置

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

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

这是Main

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

3 个答案:

答案 0 :(得分:2)

  

"我不会低估Class1() :a(3)的含义。"

它被称为成员初始化列表,并使用值a初始化类成员变量3

另见What is this weird colon-member (“ : ”) syntax in the constructor?

答案 1 :(得分:1)

Class1()是一个构造函数。

构造函数是一个在创建对象时初始化类成员值的函数。这里,当你使用Class1 c11时,会调用构造函数并将值c11.a初始化为3。

Class1():a(3)表示构造函数正在初始化为3。

要了解有关构造函数的更多信息,请访问这些链接

http://www.tutorialspoint.com/cplusplus/cpp_constructor_destructor.htm

http://www.cprogramming.com/tutorial/constructor_destructor_ordering.html

答案 2 :(得分:1)

它是"member initializer list"。成员变量int a只是已初始化,其值为3。将值分配给构造函数中的a 将是分配

初始化列表初始化成员变量(通过自己的或父类的构造函数)。如果列表中不包含成员变量,则它是 default-initialized ,即调用其默认构造函数,对于类型为int的成员变量,使用值{ {1}}。

结论:

在构造函数中初始化成员变量 first 调用默认构造函数,然后将特定值分配给成员。