gpt4 book ai didi

c++ - 继承自 shared_ptr

转载 作者:行者123 更新时间:2023-11-28 02:31:46 24 4
gpt4 key购买 nike

我继承自 shared_ptr<void>存储额外的字段 length显示由 malloc 分配的内存长度功能。
我也路过 free作为自定义删除功能。

// a chunk of memory that will automatically be deleted
struct bytes : public std::shared_ptr<void> {
public:
unsigned int length;
bytes(std::nullptr_t) :
std::shared_ptr<void>(nullptr),
length(0) { }
bytes(int len) :
std::shared_ptr<void>(malloc(len), free),
length(len) { }
};

// a sample use case
bytes foo(int n){
if( condition1)
return nullptr;
bytes b(100);
// ....
fread(b.get(),1,100,file_pointer);
// ....
return b;
}

我只是不确定这段代码是否有隐藏的错误? (我是 c++11 的新手)。

最佳答案

这真是个糟糕的主意。就是std::shared_ptr<std::vector<char>> ,但添加了一些糟糕的东西,比如从具有非虚拟析构函数的类继承。

您应该真正喜欢组合现有的标准类,而不是自己动手。它非常优越。

关于c++ - 继承自 shared_ptr<void>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28792492/

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