您有两种可能性 - 内联:
class DerivedClass : public BaseClass {
public:
DerivedClass (string b) : BaseClass(b) {}
};
或不合时宜:
class DerivedClass : public BaseClass {
public:
DerivedClass (string b);
};
/* ... */
DerivedClass::DerivedClass(string b) : BaseClass(b)
{}
更多示例:
class DerivedClass : public BaseClass {
public:
DerivedClass(int a, string b, string c);
private:
int x;
};
DerivedClass::DerivedClass(int a, string b, string c) : BaseClass(b + c), x(a)
{}
在初始化列表上:
class MyType {
public:
MyType(int val) { myVal = val; } // needs int
private:
int myVal;
};
class DerivedClass : public BaseClass {
public:
DerivedClass(int a, string b) : BaseClass(b)
{ x = a; } // error, this tries to assign 'a' to default-constructed 'x'
// but MyType doesn't have default constructor
DerivedClass(int a, string b) : BaseClass(b), x(a)
{} // this is the way to do it
private:
MyType x;
};