我有一个函数定义了一个在 CStringW 中键入的局部变量,通过值而不是通过引用将此对象返回给调用者是否安全?
问问题
286 次
2 回答
2
是的,应该没问题。CString
在内部使用具有引用计数的缓冲区并进行写入时复制,因此当您创建原始对象的副本CString
然后销毁原始对象时,一切都应该“正常工作”。
于 2010-08-10T02:56:42.790 回答
1
我相信 CString 来自 MFC,而不是 STL,因此您可能想要更改标签。
如果要从函数返回局部变量,则按值返回是安全的,但按引用返回则不安全。按值返回有效地将字符串复制到调用者。通过引用返回给调用者一个对局部变量的引用,该变量在函数返回时被销毁——所以调用者永远不能使用它,并且返回的引用总是无效的。
于 2010-08-10T02:58:30.173 回答