c++ - 这是传递临时对象的安全方法吗

标签 c++ temporary

m_sUser.compareNoCase(pmA2U("pmkerberosuser").buffer())

pmA2U 按值返回一个对象,该对象有一个成员函数 buffer() 用于访问其内部缓冲区。为 pMA2U 的返回值构造的临时对象是否会在封闭函数 compareNoCase 完成之前一直存在,并将其作为参数传递给该函数?

最佳答案

是的。一个临时对象持续到创建它的完整表达式结束。在这种情况下,完整的表达式就是整个语句,因此它将一直持续到函数返回之后。

确保该函数不会在任何地方存储指向缓冲区的指针或引用,因为它们在返回后不久就会失效。

关于c++ - 这是传递临时对象的安全方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20398370/

相关文章:

c++ - 解析模板和 const volatile 类型

c++ - 将 CGAL 与 Code::Blocks 结合使用

git - 哪些 git 命令可以删除你的 stash ?

c++ - 将临时对象附加到对 const 的引用时出错

c++ - const char * 在循环期间改变值

C++模板问题

android - 临时Webview Android

c++ - *临时*排序 vector 的好方法是什么?

sql - 如何在 SQL Server 2012 中创建的临时表上找到索引列表

c++ - 错误 C1001 : An internal error has occurred in the compiler