2012-11-26 105 views
0

可能重复:
What is this weird colon-member syntax in the constructor?构造函数设置?

我想明白这是什么样的代码意味着

说我有这个

class OptionStudent: public Student // derived class from Student class 
{ 
    public: 
     explicit OptionStudent(const std::string id = "12345678", 
           const std::string first = "someone") 
     : Student(id, first) 
     { 
      count_++; 
     } 
} 

那是什么在“某人”之后冒号):< - pa rt叫或意味着这个构造?
我知道构造函数可能有点不正确,但我不知道这是叫什么。我只是从教练在教学板上写的内容抄录了笔记,并不理解它。
与类或对象记住某事有关吗?

+0

这是一个初始化列表。 – rightfold

回答

1

这是会员initialization list。在这种情况下,它以idfirst作为参数调用基类的构造函数。它也可以为你班级的非数据成员(如果有的话)提供初始值。

请注意,Student(id, first);之后的分号是语法错误,需要删除。

+0

啊谢谢!是的,它应该是一个逗号,我刚刚意识到,在我的笔记为更多的成员,进入其他构造函数的习惯的进一步元素。将分号放在习惯之外。我没有知道它被称为初始化列表谢谢。 –

0

它被称为“初始化列表”。请参阅以下文章"Understanding Initialization Lists in C++"

基本思想是,当您在{之后输入构造函数的代码时,您应该将所有成员初始化为作为参数或默认传递的值。

使用初始化列表,您也可以直接将参数传递给基类!这是正在发生的事情例如,在你所描述的:

  • 第一,无论是idfirst被设置为使用default parameter value一些值。
  • 秒,这些值用于初始化基类Student类。

当然可以传递不同的值作为OptionStudent自变量,这些值将用于初始化Student

相关问题