2012-04-25 111 views
2

我有以下代码:的boost :: scoped_array :: get()方法返回语句

std::string HtmlToText(std::string const& html) 
{ 
    boost::scoped_array<char> text(converter.toText(html.c_str())); 
    return text.get(); 
} 

我使用此代码关心的是是否不反对text会后text.get()回报,但暂时返回之前遭到破坏对象std::string被构建。如果当时遭到破坏,这将是一个问题。

我在C++ 03标准中搜索了关于什么时候在函数范围内关于return语句破坏对象的规则和细节,但是我没有找到我想要的东西。任何人都可以帮我找到它吗?

回答

3

我手边没有C++ 03草案的文本,但我似乎记得,在调用实际的text对象之前,任何临时创建的临时文件都将被销毁(块中自动对象的LIFO排序范围),这应该保证你永远不会遇到这个问题。