为什么这个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();
}
答案 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 调用默认构造函数,然后将特定值分配给成员。