构造函数设置?

时间:2012-11-26 12:19:55

标签: c++ constructor

  

可能重复:
  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_++;
        }
}

“某人”之后的那个冒号是什么:< - 这个构造函数被称为或意味着什么? 我知道构造函数可能有点不正确,但我不知道这是什么。我刚刚从教师在板上写的内容中复制了我的笔记,并且不理解它 与类或物体有什么关系记忆的东西?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

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

  • 首先,使用idfirstdefault parameter value都设置为某些值。
  • 第二,这些值用于初始化基础Student类。

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