【发布时间】:2014-01-07 17:20:57
【问题描述】:
最近我参加了一个C++技术面试:面试官问了我一个问题,我没能回答:即使我在互联网和一些论坛上尝试过但无法得到答案,请看下面的代码sn-p :
using namespace std;
class Base1
{
public:
Base1()
{
cout << "Base1 constructor..." << endl;
}
~Base1()
{
cout << "Base1 Destructor..." << endl;
}
};
class Base2
{
public:
Base2()
{
cout << "Base2 constructor..." << endl;
}
~Base2()
{
cout << "Base2 Destructor..." << endl;
}
};
class Derived : public Base1, public Base2
{
public:
Derived()
{
cout << "Derived constructor...." << endl;
}
~Derived()
{
cout << "Derived Destructor..." << endl;
}
};
int main()
{
cout << "Hello World" << endl;
Base1 b1; Base2 b2;
Derived d1;
return 0;
}
说明:有两个名为 Base1 和 Base2 的基类和一个名为 Derived 的派生类。 Derived 是从 Base1 和 Base2 多重继承的。
问题:我希望 Derived 只能从一个类继承,而不是从两个类继承。如果开发人员将尝试从这两个类继承:那么应该会产生错误:让我总结一下:
- 场景 1:派生类:public Base1 // 好的。---> 没有错误
- 场景 2:派生类:public Base2 // 好的。---> 没有错误
- 场景 3:派生类:public Base1、public Base2 // 错误或异常或任何事情。无法继承。
注意:你能回答这个问题吗:我真的不确定这是否可行。还有一件事:这不是钻石问题。
谢谢。
【问题讨论】:
-
您可能会争辩说,C++ 可能是采用这种方法的错误语言;最好是允许多重继承并使用 C++,或者切换到不允许多重继承的语言。不过,我很想知道是否有解决方案。
标签: c++ inheritance multiple-inheritance