gpt4 book ai didi

c++ - C++中同时的私有(private)和公共(public)继承

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

假设类 Y 公开继承了类 X。类 Z 是否可以在公开继承 X 的同时私有(private)继承 Y

为了更清楚地说明这一点,假设 X 定义了公共(public)方法 x1x2Y 继承X,覆盖x1 并提供方法y。 C++ 是否允许第三个类 ZYx1 实现的方式继承 Yy 是私有(private)的,而外界只看到它公开继承了 X,即只有一个公共(public)方法 x2?

最佳答案

是的,这叫做虚拟继承。

struct X {
virtual void x1();
void x2();
};

struct Y : virtual X {
void x1(); // overrides
void y();
};

struct Z : private Y, virtual X {

};

人们不能执行 z.y()z.x1() 但他们可以执行 z.x2() 并且可以将 code>Z*X*。然而,一旦他们这样做,他们当然可以调用 converted->x1() converted->x2()

你没有说任何关于你的目标,但听起来你真的想保留 Y 作为指针

struct X {
virtual void x1();
void x2();
};

struct Y : X {
virtual void x1(); // overrides
void y();
};

struct Z : X {
virtual void x1() { // overrides
/* uses y->x1 */
}
Y *y;
};

这对我来说看起来更熟悉。

关于c++ - C++中同时的私有(private)和公共(public)继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4546340/

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