这个初始化列表是什么意思

What does this initializer list mean?

本文关键字:是什么 意思 列表 初始化      更新时间:2023-10-16
// Use multiple inheritance. We want 
// both a string and an Object:
class MyString: public string, public Object {
public:
  ~MyString() {
    cout << "deleting string: " << *this << endl;
  }
  MyString(string s) : string(s) {}
};

对于上面的代码,我不明白string(s)是什么意思?事实上,没有一个叫做string的变量,但是为什么它可以工作呢?

通常,在构造派生类时,将调用默认的基构造函数(如果存在的话)。如果你想显式地为某个派生构造函数调用不同的基构造函数,你可以使用初始化列表来实现。

在这种情况下,当构造MyString时,以string作为唯一参数(复制构造函数)的string -构造函数将以s作为参数调用。

string(s)正在与s构建MyString的父类实例。

注意MyString继承自string,这就是string的用法。

初始化类型为string的父子对象。实际上,它指定了为string父类调用哪个父构造函数。

MyString源自string。您引用的语法string(s)s作为唯一参数调用基类构造函数。