1 c++ oop inheritance constructor-overloading
执行下面的代码将给出以下行的错误Child(){/**........code*/}:没有匹配的函数用于调用 'Base::Base()' 并且候选 Base::Base(int) 需要 1 个参数,并且没有提供。
class Base
{
public:
Base(int test)
{
};
};
class Child : public Base
{
public:
Child ()
{
/**....
....
code*/
};
Child(int test):Base(test)
{
};
};
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否有办法在派生类中使用构造函数 - 例如:Child(){};- 与其基类没有任何关联。
不。
根据您的定义, aChild继承自,Base并且在Child没有Base子对象的情况下无法创建 a 。
相反,您应该提供一个参数(无论是一个好的默认值):
Child() : Base(42) {};
Run Code Online (Sandbox Code Playgroud)
或者Base可以提供一个默认构造函数(一个可以不带参数调用的构造函数),那就是
class Base {
public:
Base(int test = 42) {};
};
Run Code Online (Sandbox Code Playgroud)
那么你Child就可以了。