// 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
的变量,但为什么它可以工作?
答案 0 :(得分:3)
通常,在构造派生类时,将调用默认的基础构造函数(如果存在)。如果要为某个派生构造函数显式调用不同的基础构造函数,可以使用初始化列表来执行此操作。
在这种情况下,构造MyString
时,string
- 构造函数将string
作为其唯一参数(复制构造函数),将使用s
调用作为论点。
答案 1 :(得分:2)
string(s)
正在使用MyString
构建s
的父类实例。
请注意MyString
继承自string
,这就是string
使用的内容。
这称为“初始化列表”。
答案 2 :(得分:1)
它初始化类型为string
的父子对象。实际上,它指定要为string
父级调用哪个父构造函数。
答案 3 :(得分:1)
MyString
来自string
。您引用的语法string(s)
以s
为唯一参数调用基类构造函数。