Funkcja zwracająca stałą?

Funkcja zwracająca stałą?
LU
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdańsk
0

Może mi ktoś wytłumaczyć ten kod

Kopiuj
 const int fun() {      }

Funkcja zwraca wartosc typu int ale co powoduje const w tym przypadku ?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Dla inta nie mam pomysłu na zastosowanie szczerze mówiąc, ale zupełnie normalne jest zwracanie const char* co oznacza że nie wolno charów pokazywanych przez ten wskaźnik modyfikować.

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1683
0

Wgl http://www.ebitech.pl/pl/blog/programowanie-c-cpp-2.html tutaj jest dość spoko art nt. const. Fajne to jest jak funkcja przyjmuje wskaźnik i widać od razu przez const, że go nie ruszy.
np. void f1(const owntype_t *ptr)

satirev
  • Rejestracja: dni
  • Ostatnio: dni
1

W przypadku zwracania przez wartość typu stałego, prostego (np. const int) const przy zwracanym typie nie ma żadnego znaczenia - zwrócona będzie kopia obiektu.
const zaczyna mieć znaczenie dla typów złożonych - jeśli zwracasz obiekt const przez wartość nie możesz modyfikować r-value, jak i nie możesz użyć semantyki przenoszenia, która ma tylko sens w przypadku non-const r-value.

LU
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdańsk
0

Naprzyklad nie rozumiem tego :

Kopiuj
 
const int* fun() { //tworze funkcje ktora zwraca wskaznik do stalego typu int 
	int *wsk=new int; //tworze wskaznik na typ int bez const
	return wsk; //zwracam te wartosc i odziwo dziala chociaz jest deklaracja typu int a nie const int* a funkcja zwraca przeciez const int*
}

int main() {

const int*v=new int; //a tutaj musze stworzyc const int* a we wnetrzu  funkcji nie musialem tego robic 
v=fun();


	return 0;
}

Ale wydaje mi sie ze chodzi tu o to ze typ zwracany wymusza aby ta wartosc ktora zostanie zwrocona byla przypisana wlasnie dla
wskaznika typu const int * .

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
2

Bo nie jest problemem wprowadzenie restrykcji -> dodanie const. Usunięcie restrykcji dopiero byłoby problematyczne.
No bo to co za problem kiedy weźmiesz kartkę papieru i zaczniesz na niej pisać (nie jest const) a następnie zalaminujesz i powiesz "teraz już nie wolno jej zmienić" (dodasz const). Jest to zupełnie normalne i logiczne. W drugą stronę niekoniecznie.

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.