Size: a a a

2021 February 24

DP

Denis Paukaev in supapro.cxx
могут быть функции для внутренней реализации какой-то в базовом классе, зачем по умолчанию делать их виртуальными?
источник

NM

Nastya Medveda in supapro.cxx
Denis Paukaev
могут быть функции для внутренней реализации какой-то в базовом классе, зачем по умолчанию делать их виртуальными?
в этом случае их разместят в private
источник

DP

Denis Paukaev in supapro.cxx
Nastya Medveda
в этом случае их разместят в private
если она при этом будет виртуальной её приватность не помешает наследнику заоверрайдить свой вариант
источник

ПК

Побитый Кирпич... in supapro.cxx
Nastya Medveda
в этом случае их разместят в private
Норм тема как раз в private писать виртуальные функции
источник

DP

Denis Paukaev in supapro.cxx
ну да, NVI наше всё
источник

ПК

Побитый Кирпич... in supapro.cxx
Побитый Кирпич
Норм тема как раз в private писать виртуальные функции
А в public обычные
источник

ПК

Побитый Кирпич... in supapro.cxx
Denis Paukaev
ну да, NVI наше всё
Ещё шаблонный метод, что похоже
источник

NM

Nastya Medveda in supapro.cxx
Побитый Кирпич
Норм тема как раз в private писать виртуальные функции
Но virtual меняет поведение только когда указатель на базоывай класс ссылают на класс-наследник: ```MyBaseClass* o = new MyDerivedClass;```
А это вообще в каких случаях на практике происходит?
источник

ПК

Побитый Кирпич... in supapro.cxx
Nastya Medveda
Но virtual меняет поведение только когда указатель на базоывай класс ссылают на класс-наследник: ```MyBaseClass* o = new MyDerivedClass;```
А это вообще в каких случаях на практике происходит?
Что именно происходит?
источник

DP

Denis Paukaev in supapro.cxx
Nastya Medveda
Но virtual меняет поведение только когда указатель на базоывай класс ссылают на класс-наследник: ```MyBaseClass* o = new MyDerivedClass;```
А это вообще в каких случаях на практике происходит?
когда метод принимает ссылку на базовый класс например
источник

ПК

Побитый Кирпич... in supapro.cxx
Тебе непонятно зачем нужен дин.
полиморфизм?
источник

DP

Denis Paukaev in supapro.cxx
void f(const Serializable& s) {
   other_func(s.ToString());
}
источник

DP

Denis Paukaev in supapro.cxx
ну и

MyDerived d;
f(d);
источник

NM

Nastya Medveda in supapro.cxx
Побитый Кирпич
Тебе непонятно зачем нужен дин.
полиморфизм?
Мне понятно когда нужен полиморфизм, но тут поведение зависит от указателей, а я не очень поинмаю когда это применяется.
Если я использую  MyExtendedClass  унаследованный от BaseClass, то я не встречусь с указателем на базовый класс соответственно и virtual не будет нужен.
источник

DP

Denis Paukaev in supapro.cxx
Nastya Medveda
Мне понятно когда нужен полиморфизм, но тут поведение зависит от указателей, а я не очень поинмаю когда это применяется.
Если я использую  MyExtendedClass  унаследованный от BaseClass, то я не встречусь с указателем на базовый класс соответственно и virtual не будет нужен.
вон выше простой пример)
источник

ПК

Побитый Кирпич... in supapro.cxx
Nastya Medveda
Мне понятно когда нужен полиморфизм, но тут поведение зависит от указателей, а я не очень поинмаю когда это применяется.
Если я использую  MyExtendedClass  унаследованный от BaseClass, то я не встречусь с указателем на базовый класс соответственно и virtual не будет нужен.
Если ты не юзаешь наследника через указатель на базу, то и virtual тут не нужен, естественно)
источник

ПК

Побитый Кирпич... in supapro.cxx
Пиши virtual если предполагается использование через базу (дин. полиморфизм)
источник

NM

Nastya Medveda in supapro.cxx
Побитый Кирпич
Если ты не юзаешь наследника через указатель на базу, то и virtual тут не нужен, естественно)
А когда нужен? Когда я в уже существующем коде заменяю какой-то один базовый класс своим  и все остальные части этой программы  получают по ссылке вместо базового класса мой новый и пытаются работать с ним как со старым?
источник

ПК

Побитый Кирпич... in supapro.cxx
Nastya Medveda
А когда нужен? Когда я в уже существующем коде заменяю какой-то один базовый класс своим  и все остальные части этой программы  получают по ссылке вместо базового класса мой новый и пытаются работать с ним как со старым?
Не со старым, а по контракту базового класса.
источник

D

Dmitriy in supapro.cxx
0_о
источник