Nie daje mi spokoju jedna sprawa... Podobno funkcja może zwracać przez referencje, ale jeżeli funkcja zwraca przez referencje swoje zmienne lokalne jest to błąd, ponieważ referencja będzie wskazywała na nie istniejący obiekty co jest błędem. Więc rozumiem przez to, że funkcja może zwracać przez referencje tylko te obiekty które sama otrzymała przez referencje tak? np kod:
int &suma(int a,int b)
{
int wynik=a+b;
return wynik;
}
int main(){
int &rSuma=suma(5,7);
jest błędny tak?
gdybyśmy wynik zaalokowali na stercie też by nam to na wiele nie dało bo to skończeniu funkcji utracilibyśmy wskaźnik do tego obiektu i nie moglibyśmy zwolnić bezpośrednio pamięci kiedy nie będzie ona potrzebna, a nawet jeśli utworzylibyśmy nowy wskaźnik i przypisali adres rSuma poczym byśmy go zwolnili znow by powstał błąd gdyż rSuma znowu wskazywała by na nie istniejący obiekt;/
Czy jedynym rozwiązaniem tego problemu jest utworzenie zmiennej wynik w funkcji wywołującej i przekazanie jej do funkcji wywołanej referencyjnie a następnie zwrócić ją również referencyjnie? Czy istnieje jakaś możliwość aby funkcja zwracała referencyjnie obiekt który nie otrzymała referencyjnie i nie występowały przy tym żadne błędy typu:referencja do pustego obiektu lub wyciek pamięci przez utratę wskaźnika?