В С++, если общедоступная виртуальная функция базового класса имеет ссылку на поле частного члена, а производный класс не переопределяет этот метод, тогда эта ссылка будет указывать на частный член производного класса.
Требуется разъяснение по виртуальным функциям и закрытым членам класса
comment
Пример кода будет полезен. Как виртуальная функция имеет ссылку?
- person Yakov Galka   schedule 04.09.2012
Ответы (2)
Метод базового класса по-прежнему будет воздействовать на член базового класса, даже если вы добавите член с тем же именем в свой производный класс (на что, я думаю, вы и хотели обратить внимание).
person
Nbr44
schedule
04.09.2012
Спасибо, есть ли какая-нибудь техника для достижения того, что я хочу здесь?
- person user1447725; 04.09.2012
Вы можете добавить виртуальную функцию, чтобы получить ссылку на нужные данные и переопределить ее в производном классе. Однако это не кажется очень элегантным, чего вы на самом деле пытаетесь достичь, делая это?
- person jcoder; 04.09.2012
на самом деле я пытаюсь повторно использовать код (устаревший и его изменения, которых следует избегать) в моем новом классе, который изменяет только несколько методов существующего
- person user1447725; 04.09.2012
Нет, если вы не переопределите метод, он будет вызываться как бы из базового класса и, таким образом, ссылаться на закрытый метод внутри базового класса.
person
pmr
schedule
04.09.2012
Спасибо, есть ли какая-нибудь техника для достижения того, что я хочу здесь?
- person user1447725; 04.09.2012
@ user1447725 Сделать функцию защищенной и виртуальной?
- person pmr; 04.09.2012