2
// 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,但为什么它可以工作?

4

4 回答 4

3

通常,在构造派生类时,会调用默认的基构造函数(如果存在)。如果您想为某个派生构造函数显式调用不同的基构造函数,您可以使用初始化列表来执行此操作。

在这种情况下,在构造 时MyStringstring将 astring作为其唯一参数的 -constructor(复制构造函数)将被调用 withs作为参数。

于 2013-03-13T14:50:50.763 回答
2

正在构造with的string(s)父类实例。MyStrings

请注意,MyString继承自string,这就是使用 ofstring所指的内容。

这被称为“初始化列表”。

于 2013-03-13T14:49:29.917 回答
1

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

于 2013-03-13T14:49:39.363 回答
1

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

于 2013-03-13T14:49:41.543 回答