Om maar even met de deur is huis te vallen: als ik dit doe,
... geeft mijn compiler (GCC3) een warning, nl. dat ik een reference naar een local teruggeef.
Het werkt echter wel.
De reden is dat ik wil doen, is omdat het idee krijg dat bij het returnen van een value, een nieuwe instance met deze waarde wordt gealloceerd. Dit blijkt nl. uit het feit dat...
... niet mag.
Dus mijn vraag: is het bovenste voorbeeld legaal volgens de C++ standaard?
C++:
1
2
3
4
5
| const SomeClass &SomeFunction( ... ) { ... return SomeClass( ... ); } |
... geeft mijn compiler (GCC3) een warning, nl. dat ik een reference naar een local teruggeef.
Het werkt echter wel.
De reden is dat ik wil doen, is omdat het idee krijg dat bij het returnen van een value, een nieuwe instance met deze waarde wordt gealloceerd. Dit blijkt nl. uit het feit dat...
C++:
1
2
3
4
5
| AbstractClass SomeFunction( ) { ... return DerivedClass( ); } |
... niet mag.
Dus mijn vraag: is het bovenste voorbeeld legaal volgens de C++ standaard?