gpt4 book ai didi

C++:有什么方法可以防止抽象基类的任何实例化?

转载 作者:IT老高 更新时间:2023-10-28 22:23:58 30 4
gpt4 key购买 nike

除了拥有一个纯虚函数之外,有没有办法防止抽象基类的实例化?

我可以这样做:

class BaseFoo
{
virtual void blah() = 0;
};

class Foo : public BaseFoo
{
virtual void blah() {}
};

但我想避免使用 vtable。 (根据 my other question about virtual destructors )

Microsoft ATL 有 ATL_NO_VTABLE 来完成这个(或者至少我认为它是这样做的......)

最佳答案

一个非常明显的方法是声明一个 protected 构造函数,并在非抽象派生类中声明公共(public)构造函数。

这当然将正确性的负担转移到派生类,但至少基类受到保护。

关于C++:有什么方法可以防止抽象基类的任何实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6272445/

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