关于对象生命历程的会话
2007-03-16 21:57:35 来源:WEB开发网核心提示: “小心,我的孩子,关于对象生命历程的会话(3),这种不常见的技巧可能是很危险的,不可以轻易使用的,你创建的对象从来都没有存在过,我的工作就是在你处理未定义行为时,事实上,我至少可以想到一种情况:是关于对象生命的
“小心,我的孩子。这种不常见的技巧可能是很危险的,不可以轻易使用的。事实上,我至少可以想到一种情况:是关于对象生命的,这样的话可能会导致未定义的行为。”
“你是指...”我提示了一句。
“吃完午饭之后再说吧,”领袖平静地答道。我看见远处的几个同事正在准备去吃午饭。我一把抓起外套,加入了他们,接着,我们向当地的一家饭馆走去。
不知何故,午餐时我们一直控制着不去谈论关于购物的话题。讨论多集中于我们最感情趣的假日电影,比较《三十四号街的神谕》重拍前后的不同,还有Alistair Sim 和 Patrick Stewart 哪一个更加吝啬。(我选了Stewart。)鲍勃对我此举感到奇怪,然而――我认为他最喜欢的角色会是Grinch,但是他却非常喜欢《美丽人生》。
当我吃完午饭回去时,我心满意足。我坐在桌子前,开始集中精神考虑领袖一会儿会说些什么。最后,我努力地保持着清醒,并写下了如下代码:class U
{
T& t_;
public:
U( T & t ) : t_( t ) { }
};
{ // ... 一些域块 ...
U u( (T() = T()) );
// ...
}
当对象u完成构造时,临时对象的生命就终结了,对象u将成为一个野引用(译者:因为有人将被释放后但是没有标示为NULL的指针称作“野指针”)。
就好像T的对象从来都没有存在一样,我沉思着疑惑着。
“好吧,乔治,”我听到领袖的声音,“你得到你想要的了。你永远不会出生了。”
“啊?谁是乔治?”我看着领袖。
“就是你呀,”领袖回答道。我一看到她我就知道我我正在做梦――在梦中,你自己知道自己是在做梦,但是你确不得不深入其中。“你就是乔治·贝利。你创建的对象从来都没有存在过。我的工作就是在你处理未定义行为时,给你看看会发生什么事情。”
更多精彩
赞助商链接