【发布时间】:2011-11-09 20:16:34
【问题描述】:
假设“A”类存在并且是正确的。使用对“A”的引用而不是类“B”中的指针会产生什么负面结果。那就是:
// In Declaration File
class A;
class B
{
public:
B();
~B();
private:
A& a;
};
// In Definition File
B::B(): a(* new A())
{}
B::~B()
{
delete &a;
}
为了“B”的进一步正确性而省略了额外的代码,例如复制构造函数和赋值运算符,只是为了演示问题的概念。
【问题讨论】:
-
有趣。我以前见过这样的代码。可能是,这只是一种避免取消引用和使用
->并且仍然使a动态分配的方法,出于某种原因:?为问题 +1。 -
这有什么意义,而不仅仅是
A a;?这不是比引用或指针更好吗? -
@tenfour 在很多情况下,但这是一个简化的示例 - 假设
a背后的值是由工厂创建的。 -
@tenfour 同样使用值对象可以防止前向声明。
-
用
new获得的解引用指针初始化引用不是惯用的 C++。
标签: c++ pointers coding-style reference