一个关于临时对象的bug
译注:由wdn 2003年6月的bug++翻译,有删减。
我相信任何一个使用c++超过一定时间的程序员都不会否认这样一个事实:使用c++需要有足够的技巧。它充满了有各种各样的难以识别的陷阱,顷刻就可以让一段看起来毫无破绽的代码崩溃。例如,对c/c++的新手而言,学会如何考虑对象的生存期就是他们必须跨越的一个障碍,这方面最典型的问题,就是对对象指针的使用,特别是在使用一个已经被删除了的对象指针的时候:
myclass *mc = new myclass;
// do some stuff
delete mc;
mc->a = 1; // uh oh...mc is no longer valid!