Java 不支持抽象类的多重继承,但我正在尝试在 C++ 中做同样的事情:
//this is Java-style pseudocode
public abstract class Rectangle{
public abstract double getHeight();
public abstract double getWidth();
public double getHeight(){
return getWidth()*getHeight();
}
}
public abstract class Container{
public abstract void printTypes();
public abstract void printEachElement();
public void printContainerStuff(){
System.out.print("Has the types: ");
printTypes();
System.out.print("List of elements: ");
printEachElement();
}
}
public abstract class Array extends Rectangle, Container{ //this can't be done in Java, but what about C++?
}
在 C++ 中是否有等效的 Java 抽象类可以做到这一点?
最佳答案
要使 C++ 中的类抽象,至少有一个成员函数必须是纯虚函数:
class X
{
public:
virtual void f() = 0;
};
如前所述,C++ 中允许多重继承:
class Rectangle
{
public:
virtual double getHeight() = 0;
virtual double getWidth() = 0;
double getHeight(){
return getWidth()*getHeight();
}
};
class Container
{
public:
virtual void printTypes() = 0;
virtual void printEachElement() = 0;
};
class Array: public Rectangle, public Container
{
// If the pure virtual member functions in the base classes
// are not implemented then this class is also abstract.
};
关于java - C++抽象类的多重继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11057297/