我正在学习c ++而我正在查看以下网页:
http://msdn.microsoft.com/en-us/library/vstudio/bb384842.aspx
该页面上给出的代码在步骤7中包含以下代码行。
Cardgame::Cardgame(int players)
: players(players)
{
totalParticipants += players;
cout << players << " players have started a new game. There are now "
<< totalParticipants << " players in total." << endl;
}
据我所知,第一行对应一个对象构造函数,它接受一个整数参数。但是,我不能直接了解该行
: players(players)
这种符号是什么意思?有人可以用尽可能简单的方式向我解释这个吗?
答案 0 :(得分:1)
它被称为member initialization list
。您可能会发现此帖子C++ member initialization list很有用。
在您发布的代码中,它会使用输入值players
初始化类成员players
。 (顺便说一句,使用相同名称的风格不好)。
答案 1 :(得分:1)
它被称为成员初始化列表。
它用于通过为其选择最佳初始化程序来初始化类的成员。在这里,您使用相同的参数初始化您的成员players
。 (选择相同名称可能会让人感到困惑,这不是一个很好的做法。)
来自标准:
12.6.2初始化基础和成员[class.base.init]
在类的构造函数的定义中,直接和虚拟基础子对象和非静态数据成员的初始化程序可以由ctor-initializer指定,其格式为
ctor-initializer: mem-initializer-list mem-initializer-list: mem-initializer ...opt mem-initializer , mem-initializer-list ...opt mem-initializer: mem-initializer-id ( expression-listopt) mem-initializer-id braced-init-list mem-initializer-id: class-or-decltype identifier
我真的建议你阅读这篇帖子的第一篇文章,并通过引用 Scott Meyers 来解释它:http://www.cplusplus.com/forum/articles/17820/
您可以在此处获取更多信息:http://en.cppreference.com/w/cpp/language/initializer_list
答案 2 :(得分:0)
这是指initialization list
,它是初始化对象成员的另一种形式。
初始化列表优于正常构造的优点是它通常很快,因为它在初始化成员之前不会创建临时对象。
缺点可能是this
指针在初始化列表中要小心使用
答案 3 :(得分:0)
正如taocp已经提到的那样,该行指的是成员初始化列表。
有几种方法可以初始化成员 成员初始化列表(有效方法) 2.使用分配,例如球员= 10
内置类型可能没有任何区别,例如: int,char 但是如果要分配大对象,则使用成员初始化列表。在赋值中调用构造函数/析构函数,这绝对不是保证