【问题标题】:C++ class declarations (inheritence) [closed]C++ 类声明(继承)[关闭]
【发布时间】:2013-10-16 09:29:05
【问题描述】:

定义类 X、Y 和 Z,使得 Y 是 X 的子级,Z 是 Y 的子级。Y 类应该是抽象的。

如何声明 Y 类,因为它应该是抽象的?

【问题讨论】:

  • 至少要有一个纯虚成员函数。

标签: c++ inheritance abstract-class


【解决方案1】:
class X
{
};

class Y : public X
{
public:
    // For defining an abstract class without pure virtual functions:
    virtual ~Y() = 0;

    virtual void method() = 0;  
};

class Z : public Y
{
public:
    void method() override
    {
    }
};

【讨论】:

  • 关闭,但缺少一些标点符号并组成了一个关键字。
  • 对我来说看起来像是 C++ 以外的其他语言。
  • 更接近,但 C++ 中没有 abstract 关键字。如果一个类有一个纯虚成员函数,那么它就是隐式抽象的。
  • @MikeSeymour 你确定吗?如果我用抽象关键字声明一个没有任何纯虚函数的类,我无法从中创建一个对象,我得到这个错误:类“”是用类修饰符“抽象”声明的
  • @MohammadRB:我完全确定 abstract 不是 C++ 关键字。要么你没有编译 C++,要么你有一个带有非标准扩展的编译器。
【解决方案2】:
class Y {
  public:
    virtual void foobar() = 0;
};

这是 c++ 意义上的抽象类。

【讨论】:

    猜你喜欢
    • 2017-01-12
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2019-07-16
    • 1970-01-01
    • 2016-12-12
    相关资源
    最近更新 更多