【发布时间】:2016-11-15 16:12:56
【问题描述】:
我想知道标准对以下代码的规定。可以在调用printPointer之前执行临时对象的string析构函数吗?
附言VS2010 编译器不会抱怨这段代码并且可以正常工作。
void printPointer(const string* pointer)
{
cout << *pointer << endl;
}
const string* func(const string& s1)
{
return &s1;
}
int main()
{
printPointer(func("Hello, World!!!"));
}
【问题讨论】:
-
临时字符串仅在语句结束时被破坏。有人可能会挖掘参考(带有序列点的东西?)但您可以自己查看:ideone.com/N3Brll
标签: c++ language-lawyer destructor temporary object-lifetime