【发布时间】:2015-03-12 15:16:26
【问题描述】:
我想知道将对象实例作为另一个类的成员变量处理的最佳实践是什么。
在阅读了不同的帖子之后,似乎应该避免将对象引用作为成员变量,但我不确定使用指针是否是一个好的解决方案。另一种可能是将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 成员的唯一方法似乎是使用指针或引用。有更好的解决方案吗?
【问题讨论】:
-
没有“经验法则”。这完全取决于上下文。无法回答这个问题。
-
虽然有this
-
我非常喜欢智能指针。它们使 C++ 成为一个真正可以使用的框架。
标签: c++ pointers reference shared-ptr member-variables