我想知道将对象实例作为另一个类的成员变量处理的最佳实践是什么。在阅读了不同的帖子之后,似乎应该避免将对象引用作为成员变量,但我不确定使用指针是否是一个好的解决方案。另一种可能性是拥有const
引用作为类构造函数的参数,然后使用复制构造函数来初始化成员变量。
- 处理这种情况的经验法则是什么?
- 怎么用
share_ptr
用作成员变量怎么样 - 如果成员变量引用抽象类怎么办?在这种情况下,还有其他替代指针或引用的方法吗?
编辑:
由于问题的答案实际上取决于上下文,因此我将在类成员引用抽象类的情况下指定它。例如,考虑以下实现策略模式的代码:
class Client{
// reference to Abstract strategy
void execute(){
strategy.doStuff();
}
}
class AbstractStrategy{
public:
virtual void doStuff() = 0;
}
class ConcreteStrategy{
void doStuff(){}
}
由于AsbtractStrategy
具有纯虚函数,因此将其作为成员的唯一方法似乎Client
是使用指针或引用。有更好的解决方案吗?