【发布时间】:2010-05-10 05:31:38
【问题描述】:
通常将包含的对象声明为指向该类的指针,同时在头文件中“前向声明”它们。这是为了减少代码中的物理依赖。
例如
class B; // forward declaration
class A {
private:
B* pB;
};
将这样的成员声明为shared_ptr而不是裸指针是个好主意吗?
我更喜欢 scoped_ptr,但 AFAIK 它不是标准的。
【问题讨论】:
-
如果您需要共享指针语义 - 为什么不呢?我不清楚你在这里实际问的是什么。
-
我不需要共享指针语义。由于我将 B 声明为指向 B 的指针(以减少类 A 的物理依赖性),因此我需要通过调用 new 创建 B。因此我需要在 A 的 d-tor 中删除它。工作量不大,但问题是是否在这里使用 shared_ptr 来处理 B 释放问题,是否是一个好方法。
-
@idimba:如果您不需要共享指针所提供的功能,为什么要使用共享指针?如果您不需要指针所提供的功能,也不要使用其中之一。一个很好的经验法则是不要使用与您想要做的事情不匹配的语言功能。
-
shared_ptr / unique_ptr FTW ! !
-
为什么它可以减少代码中的物理依赖。
标签: c++ boost shared-ptr