LINUX.ORG.RU

История изменений

Исправление Kuzy, (текущая версия) :

// фактически в памяти последовательно расположенны члены Derived и Base<Derived>
// this внутри getX указывает на начало Base, 
// внутри getX, this кастуется к Derived*, полученный указатель указывает на начало Derived
Derived a;
a.getX();

// тоже самое, но в памяти только Base<Derived>, если кастануть this к Derived*, 
// то полученный указатель будет указывать на мусор рядом с Base<Derived>, что и происходит
Base<Derived> b;
b.getX();

Исходная версия Kuzy, :

// фактически в памяти последовательно расположенны члены Derived и Base<Derived>
// this внутри getX указывает на смещение до Base, 
// внутри getX, this кастуется к Derived*, полученный указатель указывает на смещение до Derived
Derived a;
a.getX();

// тоже самое, но в памяти только Base<Derived>, если кастануть this к Derived*, 
// то полученный указатель будет указывать на мусор рядом с Base<Derived>, что и происходит
Base<Derived> b;
b.getX();