Witam
Właśnie zagłębiam się w tematykę zmiennych referencyjnych oraz typu const i dla przykładu napisałem na brudno parę linijek kodu i jak jak to interpretuję. Moje pytanie po prostu brzmi czy moje przemyślenia na ten temat są słuszne.
void f1(float var){
}
void f2(float& var){
}
void f3(const float& var){
}
int main(){
int a=8;
float b=10.1;
f1(a); // "a" jest rzutowane fo typu float i kopiowane do zmiennej var. Możliwość edycji zmiennej var bez wpływu na zmienną a
f1(b); // var jest kopią zmiennej b. Możliwość edycji zmiennej var bez wpływu na zmienną b
f1(1+2); wynik dodawania jest castowany do float i zapisywany do zmiennej var. Możliwość edycji zmiennej var
f2(a); // bląd bo nie można zrobić referencji typu float ze zmiennej typu int
f2(b); // &b == &var ???. Możliwość edycji zmiennej var i wpływa to na zmienną b
f2(1+2); // błąd bo nie można zrobić referencji z wyrażenia
f3(a); // zmienna var ma adres pamięci/stosu (????) z wynikiem rzutowania zmiennej a do float. Brak możliwości edycji wewnątrz funkcji zmiennej var
f3(b); // &b == &var ??? z tym, że nie ma możliwości edycji zmiennej var;
f3(1+2); // podobnie jak w f3(a) tylko, że zmienna var wskazuje na zapisany wynik działania gdzieś w pamięci
}