将本地CStringW返回给调用者是否安全?

时间:2010-08-10 02:50:22

标签: c++ visual-c++ mfc cstring

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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