繁体   English   中英

C ++中的原始指针

[英]Raw Pointer in C++

我有一个C ++类,并且有指向对象的原始指针。 指向对象的指针将传递给该函数。 问题是底层函数可能需要有时将指针存储在STL容器中,以后将在其中使用指向对象的指针。 如果我没有使用shared_ptr,我正在考虑向该类添加一个bool标志,该标志指示该函数的调用者是否负责删除对象内存。 可以吗

谢谢。

凌乱。 而且还有很多潜在的错误,这些错误将使您在星期六的午夜过后仍然可以正常工作。

对资源所有权要保持清楚和一致。 向量要么拥有指针,要么某个特定的函数拥有指针,或者智能指针拥有指针。 这些语义上的任何混合,最终都会导致您在深夜时把头发扯掉。

最好的解决方案通常是使用引用计数的智能指针。 (您可能已经很清楚了,您不能使用std::auto_ptr )除非如此,否则请创建一个类,其唯一的目的是分配,释放和授予对向量的包含指针的访问权限。 需要包含对象的任何函数都将通过您的经理类来访问它们。

STL容器几乎可以肯定会复制您插入到其中的对象的副本。 从容器中取出对象时,该对象将被破坏。

如果默认的复制构造函数不足(即,您需要对对象进行深层复制),则需要确保实现自己的版本,该版本可以正确执行复制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM