Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
имена параметров не важны.. разные имена имеют смысл чтобы что-то с чем-то не перепутать..
в декларации функции можно одни значения писать,
а самой в функции другие
а можно везде одинаково параметры назвать, это как удобнее кодописатиелю
В том же учебнике попался код:
Странный момент в конструкторе:
Зачем тут оператор return?Я первый раз встречаю чтобы в конструкторе данный оператор использовался. Ведь по сути конструктор вызывается автоматом. И выход будет по-любому. Смысл в данному операторе в конструкторе разве есть?
В том же учебнике попался код:
Странный момент в конструкторе:
Зачем тут оператор return?Я первый раз встречаю чтобы в конструкторе данный оператор использовался. Ведь по сути конструктор вызывается автоматом. И выход будет по-любому. Смысл в данному операторе в конструкторе разве есть?
В этом примере он не нужен, но возможна сложная инициализация, когда необходим досрочный выход.
Конструктор и деструктор это обычные функции. Только конструктор по умолчанию и деструктор вызывается автоматом. Остальные пользователь вызывает.
В учебнике приводится такой пример применительно к полиморфизму:
Я вот одного не понял. Если всё-таки использовать для вызовов объекты дочерник функций т.е. производных методов CCircle и CSquare, то площадь GetArea() можно вычислить минуя объявления в базовом классе. Т.е. в базовом классе не создавать виртуальные функции вообще, а в производных создать обычный метод и всё! Тогда зачем виртуальная функция нужна?
Интересно увидеть адекватный и логичный пример, где видно, что виртуальные функции дают какую-то пользу. Потому что то, что я видел, не логично, по крайне мере, для меня. Хочется понять всё-таки.
В учебнике приводится такой пример применительно к полиморфизму:
Я вот одного не понял. Если всё-таки использовать для вызовов объекты дочерник функций т.е. производных методов CCircle и CSquare, то площадь GetArea() можно вычислить минуя объявления в базовом классе. Т.е. в базовом классе не создавать виртуальные функции вообще, а в производных создать обычный метод и всё! Тогда зачем виртуальная функция нужна?
Интересно увидеть адекватный и логичный пример, где видно, что виртуальные функции дают какую-то пользу. Потому что то, что я видел, не логично, по крайне мере, для меня. Хочется понять всё-таки.
Это простейший пример для понимания полиморфизма. Чтобы быстро дошло.
Бывают сложные случаи. Когда понадобится, применишь. Сейчас нет смысла заморачиваться. Будет задача, тогда надо думать.
Например, есть у меня базовый класс со всеми возможными интерфейсами чтения/записи. В нём же есть приватные виртуальные методы (всего 2 - чтение/запись), которые связывают этот интерфейс в базовом классе с производными классами. Собственно, призводные классы могут быть любые, где есть работа с файлами (файлы, маппинг, каналы, интернет). Каждый из производных классов определяет по-своему эти виртуальные методы, но у всех классов одинаковый интерфейс из базового класса.
В учебнике приводится такой пример применительно к полиморфизму:
Я вот одного не понял. Если всё-таки использовать для вызовов объекты дочерник функций т.е. производных методов CCircle и CSquare, то площадь GetArea() можно вычислить минуя объявления в базовом классе. Т.е. в базовом классе не создавать виртуальные функции вообще, а в производных создать обычный метод и всё! Тогда зачем виртуальная функция нужна?
Интересно увидеть адекватный и логичный пример, где видно, что виртуальные функции дают какую-то пользу. Потому что то, что я видел, не логично, по крайне мере, для меня. Хочется понять всё-таки.
Попробую набросать небольшой пример:
Благодаря такой структуре, при возможных дальнейших доработках, нам не нужно лезть в рабочий алгоритм, который может быть очень большим и сложным (здесь все упрощено), нужно будет лишь добавить еще одного наследника, m3 в перечислении и ещё один case в switch. Т.е. мы унифицировали входные данные что позволит избежать правки в главной части программы.
Конечно же это уместно только если рабочий алгоритм принимает на вход разнообразные типы. Если тип один, то все это ни к чему.
В учебнике приводится такой пример применительно к полиморфизму:
Я вот одного не понял. Если всё-таки использовать для вызовов объекты дочерник функций т.е. производных методов CCircle и CSquare, то площадь GetArea() можно вычислить минуя объявления в базовом классе. Т.е. в базовом классе не создавать виртуальные функции вообще, а в производных создать обычный метод и всё! Тогда зачем виртуальная функция нужна?
Интересно увидеть адекватный и логичный пример, где видно, что виртуальные функции дают какую-то пользу. Потому что то, что я видел, не логично, по крайне мере, для меня. Хочется понять всё-таки.
Вот простой пример:
Мы используем функцию GetArea(), не зная, для какой фигуры она вызывается.У меня есть вот такой вот Сеттер в классе:
Компилятор ругается в общем-то на такое присвоение элементов массиву ColorBySend так:
С чем это связано? Неужели нужно поэлементно присваивать значения? Списком не возможно? С чем это связано? Ведь так даже в учебнике присваивание происходит...У меня есть вот такой вот Сеттер в классе:
Компилятор ругается в общем-то на такое присвоение элементов массиву ColorBySend так:
С чем это связано? Неужели нужно поэлементно присваивать значения? Списком не возможно? С чем это связано? Ведь так даже в учебнике присваивание происходит...- это переменное выражение, которое компильятор не может понять. Увы.