Funkcja zwracająca stałą?

0

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

 const int fun() {      }

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

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ć.

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)

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.

0

Naprzyklad nie rozumiem tego :

 
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 * .

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1