2010-08-10 53 views
1

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

+0

反过来实际上是不安全的;不要返回一个局部变量的引用,因为当它超出范围时,你的引用已经死亡。 – GManNickG 2010-08-10 02:57:56

回答

2

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

1

我相信CString是来自MFC,而不是STL,所以你可能想要改变你的标签。

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

相关问题