{ // Block scope Foo fooVal = makeFoo(); // Say makeFoo() returns a (temporary, unnamed) Foo // Here the temporary Foo is dead (fooVal is a copy). // Foo &fooRef = makeFoo(); // Error, reference is non-const Foo const &fooCRef = makeFoo(); // All good // ... // The second temporary is still alive fooCRef.doSomethingFunny(); // Works like a charm ! } // The second temporary dies with fooRef //------------------------------------------ Foo *fooPtr = new Foo; // Here is a Foo Foo &fooRef = *fooPtr; // Here is an alias for that Foo delete fooPtr; // Here is the end of that Foo's life fooRef.doSomethingFunny(); // Here comes trouble...
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter