Które z funkcji są prawidłowe ? C++


(jzelek) #1

Witam, mam następujące funkcje i mam stwierdzić, które z nich są prawidłowe a które bledne.21442286_716689158535732_1787395986_n

Na moja wiedzę:
funA jest prawidłowa, jako parametr przekazujemy referencje do a i b i zwracamy ja
funB jest prawidłowa, jako parametr przekazujemy referencje do a i b i zwracamy wartość a lub b
funC jest prawidłowa, jako parametr przekazujemy wartość a i b, funkcja pracuje na kopii lokalnej i zwraca wartość a lub b
funB(ostatnia) jest błędną, jako parametr przekazujemy wartość a i b, funkcja pracuje na kopii lokalnej, zwracamy referencje i tracimy jej wartość bo w momencie zakończenia funkcji kopie lokalne są usuwane wiec referencja jest nieprawidłowa

W Visual Studio wszystkie funkcje działają poprawnie. Czy ktoś mógłby mi wyjaśnić skąd wynikają rozbieżności, z mojej niewiedzy czy z czegoś innego ?

Pozdrawiam


(Fizyda) #2

Ponieważ wszystkie są składniowo poprawne, to że zwracasz referencję do obiektu który zaraz zostanie usunięty ze stosu to już Twój błąd i właściwie możesz to zrobić jak ale musisz się liczyć że odnosisz się do miejsca w pamięci które nie należy do Twojego programu albo jest używane przez inny obiekt Twojego programu.