gpt4 book ai didi

c++ - 有没有办法指定或断言子类必须重新实现特定的非抽象虚方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:04 24 4
gpt4 key购买 nike

这就是我的意思。我有一个类层次结构:

class A {
virtual int f() = 0;
};

class B : public A {
int f() override {return 5;}
void doSpecificStuff() {}
}

B 是一个自给自足的类,可以单独使用。但它也有很多后代:

class C : public B {
int f() override {return 171;}
}

有什么方法可以确保在子类化 B 时不会忘记重新实现 f 吗?

最佳答案

此解决方案的灵感来自@dyp 的评论:

你可以拆分B的两个职责,即“提供B风格的实现”和“可以被实例化”。

class B_for_implementation : public A
{
void doSpecificStuff();
};

class B_for_objects final : public B_for_implementation
{
int f() override {return 5;}
};

class C final : public B_for_implementation
{
int f() override {return 171;}
};

自包含对象将从 B_for_objects 创建,而其他类将从 B_for_implementation 派生。

关于c++ - 有没有办法指定或断言子类必须重新实现特定的非抽象虚方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31139048/

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