java - C++抽象类的多重继承

标签 java c++ class inheritance abstract

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/

相关文章:

Java-调用方法实例的问题?

python 类命名空间和 init 函数

c++ - 在 C++ 的类函数中引用二维数组

java - 如何比较两对rdd

java - SELECT INTO 语句在 java 程序中不起作用

c++ - float 减法问题

c++ - 通过 lambda 表达式初始化变量?

java - 和Engine Box2D Body GetContactList

java - 如何使用 Apache Commons CLI 解析属性文件和 --help 选项?

c++ - C++如何获取Azure容器的共享访问签名