Błędny zapis funkcji

NI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 30
0

Witam. Który z zapisów funkcji jest błędny i dlaczego?

Kopiuj
const long& funW(long &x, long &y) {
	if(x<y)
		return x;
	else
		return y;
}

const long funX(long &x, long &y) {
	if(x<y)
		return x;
	else
		return y;
}

const long funY(long x, long y) {
	if(x<y)
		return x;
	else
		return y;
}

const long& funZ(long x, long y) {
	if(x<y)
		return x;
	else
		return y;
}
OA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 95
0

Ostatni jest błędny, bo zwracasz zmienną lokalną funkcji przez referencję. Pozostałe są OK. Zresztą można spróbować skompilować - wyskoczą ostrzeżenia.

Kopiuj
g++ -Wall -c "test.cpp"
test.cpp: In function 'const long int& funZ(long int, long int)':
test.cpp:22: warning: reference to local variable 'x' returned
test.cpp:22: warning: reference to local variable 'y' returned
Kompilacja została ukończona pomyślnie

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.