次のコードについて、標準が何を言っているのだろうかと思います。 string
printPointer
を呼び出す前に一時オブジェクトのデストラクタを実行できますか?関数呼び出し時の暗黙のデストラクタの実行
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