我可以在C++类中使用`abstract`关键字

20 c++ keyword

我们可以在C++类中编写抽象关键字吗?

Ken*_*Ken 44

#define abstract
Run Code Online (Sandbox Code Playgroud)

  • 虽然很有趣,但这将是一个“真的”坏主意...... (2认同)

Dev*_*lar 38

没有.

C++中的纯虚函数声明为:

class X
{
    public:
        virtual void foo() = 0;
};
Run Code Online (Sandbox Code Playgroud)

任何具有至少一个的类被认为是抽象的.

  • 缺少退货类型.该方法也应该是虚拟的. (3认同)

Mar*_*wis 19

不,C++没有关键字摘要.但是,您可以编写纯虚函数 ; 这是表达抽象类的C++方式.


rah*_*hul 5

它是作为.NET框架的C++/CLI语言的一部分引入的关键字.

  • 从技术上讲,它是本机代码的Microsoft C++扩展,即使您不以.NET为目标,因此它不是特定于C++/CLI的.只是一个扩展,与`__interface`或`__declspec(property)`相同.当然还不是ISO C++. (5认同)

Sve*_*lov 5

不,类中至少需要有一个纯虚函数才能成为抽象类。

这是一个很好的参考cplusplus.com


ano*_*orm 5

正如其他人指出的那样,如果添加纯虚函数,该类就会变得抽象。

但是,如果您想实现没有纯虚拟成员的抽象基类,我发现对构造函数进行保护很有用。这样,您就可以强制用户子类化 ABC 来使用它。

例子:

class Base
{
protected:
    Base()
    {
    }

public:
    void foo()
    {
    }

    void bar()
    {
    }
};

class Child : public Base
{
public:
    Child()
    {
    }
};
Run Code Online (Sandbox Code Playgroud)