gpt4 book ai didi

c++ - 在 C++ 中声明抽象类

转载 作者:搜寻专家 更新时间:2023-10-31 00:09:23 24 4
gpt4 key购买 nike

如何声明抽象类?

例如,我知道它使用关键字 virtual like:

class test{
public:
virtual void test()=0;
}

我的问题是我可以像这样抽象测试类吗?如果不是,为什么以及如何

virtual class test{
}

最佳答案

在大多数情况下,您的抽象类包含抽象(C++ 术语中的“纯虚拟”)方法:

class Foo {
public:
virtual ~Foo() = default;
virtual void bar() = 0;
};

这足以使它成为一个抽象类:

Foo foo; // gcc says: cannot declare variable 'foo' to be of abstract type 'Foo'

请注意,您真的想在基类中将析构函数声明为虚拟的,否则在通过基类指针销毁派生对象时会冒未定义行为的风险。

也可能有这样的情况,您没有抽象方法,但仍想将您的类标记为抽象类。有两种方式:

一个。将你的基本析构函数声明为纯虚拟的:

class Foo {
public:
virtual ~Foo() = 0;
virtual void bar() { }
};

Foo::~Foo() = default; // need to define or linker error occurs

将所有基础构造函数声明为 protected :

class Foo {
public:
virtual ~Foo() = default;
virtual void bar() { }

protected:
Foo() = default;
};

关于c++ - 在 C++ 中声明抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43502488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com