gpt4 book ai didi

c++ - protected 继承与公共(public)继承和 OO 设计

转载 作者:行者123 更新时间:2023-11-30 02:13:16 24 4
gpt4 key购买 nike

你什么时候使用每个继承?

class Base{};

class Derived: protected Base{};
class Derived2: public Base{};

我的案例:

我有一个名为 Snapshot 的类,它只包含 GetXXX 方法。它是一个轻量级的类,用于存储 Value 类的当前状态。我还使用它进行恢复,在 Value 类实例消失后很长时间内保留此类的实例。管理器类,处理快照类的实例。让我向您展示代码:

class Snapshot
{
public:
Snapshot (const Snapshot * snap)
{
_x=snap->_x;
_y=snap->_y;
_z=snap->_z;
}
Snapshot (){_x=_y=_z=0;}
int GetX(){return _x;}
int GetY(){return _y;}
int GetZ(){return _z;}
~virtual Snapshot(){}

protected:
int _x,_y,_z;
};

class Value:public Snapshot
{

/*Very heavy class with a lot of components used to calculate _x, _y, _z*/


};


class Manager
{
public:
void Process( const Snapshot * snap)
{

}
};

你觉得这个设计怎么样?有哪些替代方案?

谢谢

解决方案和问题

  • 解决方案:我将创建 makeSnapshot 函数,该函数将通过给定的 Value 对象返回 Snapshot 对象。

  • 问题:

    • 主要问题:我发送快照的频率非常高(每秒一次,甚至更少),因此我不想招致构建和销毁成本小问题:

    • 半主要问题我必须让 Value 成为 Snapshot 的 friend ,因为我不想
      介绍二传手。

最佳答案

关于private和protected继承的问题,可以在这里找到非常详尽的解释:

主要问题是语义——某物是某物,还是某物是某物的实现。

关于c++ - protected 继承与公共(public)继承和 OO 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/643023/

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