Внутри тела конструктора параметр player
затеняет член player
, поэтому вы фактически не назначаете параметр члену. Вот почему только конструктор показывает правильное значение player
при его распечатке.
Вы можете устранить неоднозначность следующим образом:
DerivedClass(Coord p, Player* player) : ParentClass(p) {
std::cout << "During intialization the pointer value is: " << player << "\n";
this->player = player;
}
Или просто укажите у параметра другое имя:
DerivedClass(Coord p, Player* player_param) : ParentClass(p) {
std::cout << "During intialization the pointer value is: " << player << "\n";
player = player_param;
}
Лучшим вариантом было бы использовать список инициализаторов членов, где имена могут быть фактически одинаковыми, поэтому вы можете сделать:
DerivedClass(Coord p, Player* player) : ParentClass(p), player(player) {
std::cout << "During intialization the pointer value is: " << player << "\n";
}