gpt4 book ai didi

c++ - 派生类中的方法多于基类

转载 作者:行者123 更新时间:2023-11-30 04:20:08 25 4
gpt4 key购买 nike

我想问一个关于派生类的编程风格的问题:

class A
{
public:
virtual foo1()=0;
}

class B: public A
{
public:
virtual foo1();
virtual foo2();
}

class C: public A
{
public:
virtual foo1();
}

int main() {
B mB();
C mC();
mB.foo2() //OK!
mC.foo2() // obviously, it is not correct
return 0;}

因此,派生类的公共(public)方法应该少于还是等于抽象基类?

如果派生类需要更多方法,这些方法应该是私有(private)的吗?

最佳答案

派生类几乎总是比基类有更多的公共(public)函数。这就是继承的要点:您可以定义一个仅概述变量基本行为的抽象基类,然后派生类可以针对特定情况扩展此基本行为。

继承类始终是基类的特化。它实现了更具体的功能(通常还有更多的功能)。在您的示例中,您期望两个不同的特化在基类定义的行为之外以相同的方式行事。 (foo2 未在 A 中定义)。这就是问题所在。如果您需要在 A 之外定义通用行为,解决方案是创建一个中间类。

class Intermediate : public A
{
public:
virtual foo1()=0;
virtual foo2()=0;
}

class B: public Intermediate
{
public:
virtual foo1();
virtual foo2();
}

现在任何可以实现 foo2 的类都应该扩展 Intermediate,任何需要 foo2 功能的函数都应该要求一个变量至少输入中级

关于c++ - 派生类中的方法多于基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15387581/

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