gpt4 book ai didi

c++ - 如何使继承的虚函数不可用?

转载 作者:行者123 更新时间:2023-11-30 05:21:00 25 4
gpt4 key购买 nike

我有一个抽象基类,它声明了一个纯虚函数 (virtual method() = 0;)。一些继承类专门使用此方法,但在其中一个继承类中我不想使此方法可用。我该怎么做?将其设为私有(private)是唯一的选择吗?

最佳答案

好吧,你可以抛出它,这将使定位更容易。

void method() override { throw /* whatever */ ; } 

动态多态性是一种运行时属性。因此出现运行时错误。如果您要处理将在编译时触发的内容,则需要静态多态性。

template<typename Child>
struct Parent {
void callMe() {
static_cast<Child*>(this)->callMeImpl();
}
};

struct SomeChild : Parent<SomeChild> {

};

现在,如果您尝试从 SomeChild 扩展的父级调用 callMe,将出现编译时错误。

你也可以像动态多态一样持有指向父函数的指针,因为父函数会调用子函数

关于c++ - 如何使继承的虚函数不可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40422983/

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