我想知道標準對下面的代碼片段所說的內容。在致電printPointer
之前,是否可以執行臨時對象的析構函數string
?函數調用中的隱式析構函數執行
p.s. VS2010編譯器不會抱怨這段代碼並且工作正常。
void printPointer(const string* pointer)
{
cout << *pointer << endl;
}
const string* func(const string& s1)
{
return &s1;
}
int main()
{
printPointer(func("Hello, World!!!"));
}
臨時字符串僅破壞在聲明的結尾。有人可能會挖掘參考(有序列點的東西?),但你可以自己看看:http://ideone.com/N3Brll – CompuChip