C++ 代码分析:class a{}; a &re = *(new a); delete &a; 存在的问题及解决方案
这段代码存在一些问题。\n\n首先,在使用delete时应该释放的是new所返回的指针,而不是a对象的引用。所以应该使用delete &re; 而不是 delete &a;。这是因为new a返回的是a类型的指针。\n\n其次,在使用delete之后仍然使用引用re是不安全的,因为re引用的对象已经被删除了,再使用引用会导致未定义行为。\n\n如果想要在继续使用引用的情况下解决这个问题,可以使用动态内存分配来创建对象,并使用指针来引用对象。这样可以避免在删除对象后继续使用引用导致的问题。\n\n示例代码如下:\n\nc++\nclass a {};\na* p = new a;\ndelete p;\np = new a; // 继续使用指针来引用新的对象\n\n\n这样就可以在继续使用引用的情况下解决问题。
原文地址: https://www.cveoy.top/t/topic/pYyN 著作权归作者所有。请勿转载和采集!