取这两个类如:让本地变量引用其他局部变量有危险吗?
struct Owned {
Owned() : i() { }
void print() { cout << ++i << endl; }
int i;
};
struct Owner {
Owner(Owned& o) : o(o) { }
Owned& o;
~Owner() { o.print(); }
};
它是危险的这种方式来使用它们呢?
int main() {
Owned owned;
Owner owner(owned);
}
看来,这取决于它们的破坏,这可能导致owner
析构函数来调用一个被毁坏的owned
功能的顺序。是否定义了销毁局部变量的顺序,以及如何处理两个实例互相引用的情况?
请原谅我,如果这是常识,我还没有读过关于它的任何地方。
好吧,这基本上是我在想什么。谢谢。 – 2012-03-22 17:38:27
通过“让两个实例互相引用”我假定你的意思是'拥有'和'所有者'都包含对立类型的成员引用。这样做,你不能真的。但那是因为引用不能在创建后重新分配给新的对象。如果你只是a)切换到指针,b)在构造函数之外执行任务(将你从特定的时间问题中解脱出来),那么你可以完全掌握什么可以达到什么目的。但具有很大的权力....:p – 2012-03-22 17:43:39
@迈克尔:只需分配给建设后的“其他”成员。我已经有指针了。 '一个o;两个t(&o); o.other =&t;' – Xeo 2012-03-22 17:44:40