const_cast
Ostatnio zmodyfikowano 2018-01-24 13:54
Anim Temat założony przez niniejszego użytkownika |
const_cast » 2018-01-24 13:36:01 Ciekawa sprawa, której nie rozumiem... Jak to się dzieje, że mimo tego samego adresu wartość *wskaźnik oraz liczbaPI jest różna ... Czy to wszystko mieści się w definicji Undefined Behaviour? I swoją drogą na linuksie mam kompilator umożliwiający w ten sposób zmienić wartość const ^^ czyli dostanę, że liczbaPI zmieniła wartośc i wynosi 8 ^^ #include <iostream> using namespace std;
int main() { const double liczbaPI = 3.14; const double * wskDoStalej = & liczbaPI; double * wskaznik = const_cast < double *>( wskDoStalej ); cout << * wskaznik << endl; * wskaznik = 8; cout << wskaznik << " " << & liczbaPI << endl; cout << * wskaznik << " " << liczbaPI << endl; return 0; }
|
|
mateczek |
» 2018-01-24 13:47:27 const double liczbaPI = 3.14;
|
|
pekfos |
» 2018-01-24 13:48:34 Zmienne nie muszą istnieć w pamięci, tym bardziej stałe. Pobranie adresu zmiennej wymusza, by zmienna przynajmniej przez jakiś czas znajdowała się w pamięci. Stała nie może się zmieniać, więc jej wartość może być podstawiona w miejsce użycia. I swoją drogą na linuksie mam kompilator umożliwiający w ten sposób zmienić wartość const ^^ |
Jeśli mam strzelać, to dla takiego int to już nie zadziała. |
|
Anim Temat założony przez niniejszego użytkownika |
» 2018-01-24 13:54:25 @mateczek wiem, że nie wolno... moje powyższe było trochę w ramach ciekawostki :)
@pekfos dziękuję za wytłumaczenie. Faktycznie, dla int już nie działa :) |
|
« 1 » |