gpt4 book ai didi

CoW、继承类和可变共享数据的 c++ 设计模式?

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

我设计了一个写时复制基类。该类包含共享数据模型/CoW 模型中所有子项所需的默认数据集。

派生类也有仅属于它们的数据,但应该是该派生类的其他实例之间的 CoW。

我正在寻找一种简洁的方法来实现它。如果我有一个带有共享数据 FooDataPrivate 的基类 FooInterface 和一个派生对象 FooDerived。我可以创建一个 FooDerivedDataPrivate。

底层数据结构不会影响公开的 getters/setters API,因此它与用户如何与对象交互无关。我只是想知道这是否是此类情况的典型 MO,或者是否有更好/更清洁的方法?

引起我兴趣的是,我看到了私有(private)数据类之间的继承潜力。例如。 FooDerivedDataPrivate:公共(public) FooDataPrivate,但我没有看到在我的派生类中利用该多态性的方法。

class FooDataPrivate
{
public:
Ref ref; // atomic reference counting object
int a;
int b;
int c;

};

class FooInterface
{
public:
// constructors and such
// ....

// methods are implemented to be copy on write.
void setA(int val);
void setB(int val);
void setC(int val);

// copy constructors, destructors, etc. all CoW friendly
private:
FooDataPrivate *data;

};

class FooDerived : public FooInterface
{
public:
FooDerived() : FooInterface() {}

private:
// need more shared data for FooDerived
// this is the ???, how is this best done cleanly?
};

最佳答案

这是一个 implementation of Copy-On-Write对于 C++。

关于CoW、继承类和可变共享数据的 c++ 设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2795351/

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