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