Kompilacja a pamięć

Kompilacja a pamięć
WY
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:6
0

Witam, mam pewnie dosc prymitywne i abstrakcyjne pytanie, ale ciekawi mnie jedna kwestia. Jesli chcemy zmienic wartosc prywatnego pola w klasie, nie korzystajac z metod skladowych klasy to kompilator zarzuci nam, ze nie mozna tego zrobic - wszystko jasne. Ale dlaczego w momencie przekazania adresu danego, prywatnego pola do jakiejs zmiennej poza klasa, jest mozliwa jego modyfikacja? Jak dokladnie reaguje kompilator?

Endrju
  • Rejestracja:około 22 lata
  • Ostatnio:prawie 2 lata
4

Nijak.

private chroni tylko składniki klasy. Ten wskaźnik, który zwrócisz, nie jest składnikiem klasy. Pokazuje na składnik, ale nim nie jest. "Pokazywania" nikt nie chroni.


"(...) otherwise, the behavior is undefined".
WY
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:6
0

no tak, jest to dosc oczywiste i logiczne:) dzieki za wyjasnienie:)

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.