gpt4 book ai didi

c++ - 依赖 bool 值访问指针

转载 作者:太空狗 更新时间:2023-10-29 19:48:05 25 4
gpt4 key购买 nike

我有一个名为 MyClass 的类,它包含一个指向对象的指针,如下所示:

class MyClass {
public:
MyClass() : _blob(nullptr) {}
~MyClass() { free(); }

void generate() {
if(!_blob)
_blob = new Blob;
}

void free() {
if(_blob) {
delete _blob;
_blob = nullptr;
}
}

Blob* getBlob() { return _blob; }

private:
Blob *_blob;
};

它持有指向堆分配对象的指针而不将其包含在堆栈中的原因是因为某些 MyClass 实例不为此对象分配数据,因此在访问它之前我需要检查它是否不是空指针:

if(myClass->getBlob())
myClass->getBlob()->doSomething();

现在我有了这个想法来存储一个名为 _hasBlob 的 bool 变量,然后像这样使用它

if(myClass->hasBlob())
myClass->getBlob()->doSomething();

这被认为是更快和合法的吗?或者它被认为是不好的做法,因为我可以看到以某种方式结束对 nullptr 的取消引用的潜在危险。

最佳答案

这是合法但多余的。它不是更快。事实上,虽然检查本身很快,但保持 bool 值与指针有效性同步的速度稍慢。最糟糕的是证明 bool 值始终同步的维护负担。一旦它被实现并被证明是正确的,它就只是多余的和内存的浪费。

关于c++ - 依赖 bool 值访问指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33938648/

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