I C++ har man naturligvis multible nedarvning, og man kan også godt arve den samme funktion fra flere class'er:
#include <iostream>
class A
{
public:
void foo()
{
std::cout << "A::foo" << std::endl;
}
};
class B
{
public:
void foo()
{
std::cout << "A::foo" << std::endl;
}
};
class AB : public A, public B
{
public:
void bar()
{
A::foo();
B::foo();
}
};
int main()
{
AB ab;
ab.A::foo();
ab.B::foo();
ab.bar();
}
At arve den samme funktion fra flere steder er oftest en dårlig idé og kan være tegn på dårligt design og/eller navngivning.
Man kan sige at java også har multible nedarvning, så længe class'er er af typen "interface", der er ikke interface class'er i C++.
Jeg har aldrig mødt noget godt argument for at lave sprog hvor multible nedarvning ikke er muligt, det er for mig at se en fatal mangel ved sproget.