gpt4 book ai didi

c++项目设计-私有(private)继承和 "is a"关系

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:01 26 4
gpt4 key购买 nike

我想通过私有(private)继承来扩展一个类。

基类是:Graph<T>

导出的是:Tree<T>

我们知道树是一个特定的图,所以我想扩展我的 Graph 类而不让用户使用 Graph 类的 PUBLIC 方法。

制作:

template <typename T> class Tree : public Graph<T>{

.
.
.
}

有效,但我不想使用 Graph 类方法更改我的树状态。用户必须使用 Tree 类特定的方法。我想我应该使用私有(private)继承来获得我想要的东西。

问题是我不能失去“是一个”关系,因为树实际上是一个图。

什么是好的设计才能使事物变得更好并在语义上有序?

谢谢

最佳答案

嗯,你不能两者兼得。 is-a 关系恰好意味着用户可以在指向 Tree 的指针(或引用)上使用任何 Graph 定义的非虚函数、非重写函数并获得预期结果。

如果您不能允许用户调用这些函数,则意味着 is-a 关系在定义上是不合适的,您应该选择私有(private)继承。

关于c++项目设计-私有(private)继承和 "is a"关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41940079/

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