Нуждаете се от пояснение относно виртуалните функции и частните членове на класа

В C++, ако публичната виртуална функция на базовия клас има препратка към частно членско поле и производният клас не отменя този метод, тогава тази препратка ще сочи ли частен член на производния клас


person user1447725    schedule 04.09.2012    source източник
comment
Примерен код ще бъде полезен. Как виртуалната функция има препратка?   -  person Yakov Galka    schedule 04.09.2012


Отговори (2)


Методът на базовия клас все още ще действа върху члена на базовия клас, дори ако добавите член със същото име към вашия производен клас (което е, предполагам, точката, която искате да направите).

person Nbr44    schedule 04.09.2012
comment
Благодаря, има ли някаква техника за постигане на това, което искам тук? - person user1447725; 04.09.2012
comment
Можете да добавите виртуална функция, за да получите препратка към данните, които искате, и да я замените в производния клас. Въпреки това не изглежда много елегантно, какво всъщност се опитвате да постигнете, като правите това? - person jcoder; 04.09.2012
comment
всъщност се опитвам да използвам повторно кода (наследеното и промените в него, които трябва да се избягват) в моя нов клас, който променя само няколко метода от съществуващия - person user1447725; 04.09.2012

Не, ако не замените метода, той ще бъде извикан сякаш от базовия клас и по този начин ще се отнася до частния метод в основния клас.

person pmr    schedule 04.09.2012
comment
Благодаря, има ли някаква техника за постигане на това, което искам тук? - person user1447725; 04.09.2012
comment
@user1447725 Да направя функцията защитена и виртуална? - person pmr; 04.09.2012