c++中私有继承的目的

Purpose of private inheritance in c++

本文关键字:继承 c++      更新时间:2023-10-16

我正在尝试在c++中继承。我写了下面的代码:

#include <stdio.h>
class A
{
public:
    virtual void foo();
};
class B: A
{
    void foo();
};
void B::foo()
{
    printf("Derived class");
}
void A::foo()
{
    printf("Base class");
}
int main()
{
    A *a= new B();
    a->foo();
}

但是我有一个错误描述为

test.cpp:在函数' int main() '中:test.cpp:26:14:错误:' A '是一个

如果我将行class B: A替换为class B: public A,则可以正常工作。但是根据这个事实,我真的不明白在什么情况下privateprotected可能需要继承。

您正在使用A*访问B::foo()。但是继承的A::foo()和覆盖的B::foo()都是私有的

关于继承概念:

public:派生类IS-A基类Private/protected:派生类有一个基类派生类是按照基类实现的。

当派生对象可替换为基对象时,

公开继承。当派生类只需要基类(不需要接口)的实现时,私有继承。但在后一种情况下,复合是比继承更可取的方法。

check this and this