1

我有一个函数定义了一个在 CStringW 中键入的局部变量,通过值而不是通过引用将此对象返回给调用者是否安全?

4

2 回答 2

2

是的,应该没问题。CString在内部使用具有引用计数的缓冲区并进行写入时复制,因此当您创建原始对象的副本CString然后销毁原始对象时,一切都应该“正常工作”。

于 2010-08-10T02:56:42.790 回答
1

我相信 CString 来自 MFC,而不是 STL,因此您可能想要更改标签。

如果要从函数返回局部变量,则按值返回是安全的,但按引用返回则不安全。按值返回有效地将字符串复制到调用者。通过引用返回给调用者一个对局部变量的引用,该变量在函数返回时被销毁——所以调用者永远不能使用它,并且返回的引用总是无效的。

于 2010-08-10T02:58:30.173 回答