0

在构造函数中将类作为参数传递时,在大多数情况下,我最终会传递指针。主要原因是我必须传递无法实例化的抽象类,并且作为引用不能为空,我真的没有选择......

这是一个例子:

// Abstract class A
class A { 
    virtual void foo() = 0;
};

class B : public A {
    void foo();
};

class C {
public:
    C(A* a) : _a(a) {};
private:
    A* _a;
};

在某些情况下,我想C处理指向的A对象_a(删除时删除它),在其他情况下,我想C删除_a而不删除A对象。

拥有完善的编程方法的最佳实践是什么?

4

1 回答 1

2

用于shared_ptr表示共享所有权,以及unique_ptr表示唯一所有权。如果您确定 的生命C周期受A对象(或另一个拥有的对象A)的生命周期的限制,那么您可以使用引用,或shared_ptr带有 nil 删除器的 a 。

于 2012-07-06T12:21:15.967 回答