gpt4 book ai didi

c++ - 有没有办法防止在派生类的实例上调用基类方法?

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

我有一个具有大量功能的基类和一个扩展该类的派生类,但基类中有一些方法对派生类没有意义。

是否可以采取措施防止派生类使用这些方法?

Class A
{
...

public:
void SharedMethod();
virtual void OnlyMakesSenseOnA();
}

Class B : public Class A
{
...

public:
void OnlyMakesSenseOnB();
}

以下显然行不通,但是否可以做类似的事情,使编译器不允许调用某个基类方法?

Class B : public Class A
{
...

public:
void OnlyMakesSenseOnA() = 0;
}

最佳答案

不,这是完全错误的。如果成员函数在派生类型中不可调用,则您违反了 Liskov 替换原则。考虑这是否是正确的继承关系。也许您想将 SharedMethod 提取到一个真实的基础中,并提供两个独立的不相关的 AB 类型。

关于c++ - 有没有办法防止在派生类的实例上调用基类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21920595/

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