Вызов конструктора базового класса из конструктора класса-наследника. Наследование. ООП C++

Поделиться
HTML-код
  • Опубликовано: 27 окт 2017
  • Понравилось видео или оказалось полезным? Подпишись!
    Поддержка канала
    / simplecode
    Вызов конструктора базового класса из конструктора класса-наследника. Наследование. ООП C++ Для начинающих. Урок #102
    Конструктор класса пример. Зачем нужен. Конструктор с параметрами. Конструктор по умолчанию. Урок#78
    goo.gl/2va25d
    Перегрузка конструкторов класса. Что такое перегрузка. Как перегрузить конструктор. Урок#79
    goo.gl/XzRJww
    Уроки по программированию
    Наша группа ВК smplcode
    Подписывайтесь на канал / @simplecodeit

Комментарии • 80

  • @SimpleCodeIT
    @SimpleCodeIT  6 лет назад +38

    *Друзья, если вы решили изучать программирование и подписались на канал - рекомендую вам нажать колокольчик чтобы никогда не пропускать новые уроки!*

  • @wuzahns5302
    @wuzahns5302 5 лет назад +184

    если хотите, чтобы параметры к конструктору В шли в конструктор А
    B(int a):A(a)

    • @Someone-ie6rd
      @Someone-ie6rd 5 лет назад +10

      Спасибо

    • @user-rr5bz4zs5u
      @user-rr5bz4zs5u 4 года назад

      +1

    • @user-ip8cq7gy8y
      @user-ip8cq7gy8y 4 года назад

      Можно это реализовать вне класса?

    • @user-rr5bz4zs5u
      @user-rr5bz4zs5u 4 года назад +19

      @@user-ip8cq7gy8y Как и любую функцию-член:
      class Type : public base
      {
      public:
      Type(...); //просто объявление конструктора
      ...
      };
      // реализация вынесенная вне класса:
      Type::Type(...):base(...)
      {
      ....
      }

    • @lefteriszacharoullas6941
      @lefteriszacharoullas6941 Год назад +1

      Молодец спосибо

  • @SimpleCodeIT
    @SimpleCodeIT  6 лет назад +24

    #конструкторбазовогокласса #ООП #SimpleCode #урокипрограммирования

  • @Crotify
    @Crotify 3 года назад +49

    Лайк я конечно поставлю, спасибо что сделали доброе дело. От себя добавлю то, о чём тут не рассказано. (см момент 7:01 ) Новички часто сталкиваются с затруднениями при описании конструктора дочернего класса ВНЕ ТЕЛА КЛАССА.
    А делать надо так:
    class B : public A
    {
    public:
    B(); // тут мы не пишем вызов конструктора класса A
    };
    B::B(): A("наше новое сообщение") // а тут пишем
    {
    }

    • @_Yes_.
      @_Yes_. 2 года назад

      лооооооооооооооол ок

    • @gnot7900
      @gnot7900 11 месяцев назад +2

      Так давайте ещё разделим реализацию методов класса и их прототипы в отдельные файлы .cpp и .h соответственно. Так будет ещё не понятнее но зато ПРАВИЛЬНО!

  • @Ermine882
    @Ermine882 6 лет назад +29

    Спасибо за урок

  • @bakhtiiarasadov7885
    @bakhtiiarasadov7885 5 лет назад +9

    Сергей, Ваша способность доходчиво обьяснить просто поражает. Спасибо, ОГРОМНОЕ.

  • @vladimirdiadichev6140
    @vladimirdiadichev6140 6 лет назад +17

    Спасибо

  • @vladalu9794
    @vladalu9794 6 лет назад +15

    Спасибо за отличный урок!

  • @pavelios3577
    @pavelios3577 6 лет назад +12

    Спасибо за урок.

  • @user-ol9es1ch9x
    @user-ol9es1ch9x Год назад +3

    привет из 2023. Спасибо большое за уроки!

  • @user-sc2yd3fw1e
    @user-sc2yd3fw1e 4 года назад +8

    Спасибо . Хорошо сделал видео уроки ! Жаль заданий нету

  • @antonmanin3521
    @antonmanin3521 4 года назад +6

    божечки, мне это видео очень сильно помогло!
    спасибо больше!

  • @pr3454
    @pr3454 3 года назад +3

    Сергей, спасибо за Ваши видео!

  • @user-so9zy7er7x
    @user-so9zy7er7x 6 лет назад +8

    благодарю вас!

  • @kola33258
    @kola33258 6 лет назад +8

    Спасибо за урок)

  • @C2H5OHH
    @C2H5OHH 2 года назад +4

    Спасибо за урок!

  • @user-ut7tj6bp4t
    @user-ut7tj6bp4t 4 года назад +4

    Спасибо за урок))

  • @sanya8028
    @sanya8028 11 месяцев назад +2

    Посмотрел уроки до этого, решил порешать задачи и столкнулся как раз с этой проблемой. Подумал, что не усвоил какие-то моменты, сразу зашёл на канал и увидел, что следующее видео как раз на эту тему:) Большое Спасибо!

    • @gafallo
      @gafallo 3 месяца назад

      А где задачки решал не подскажешь?

  • @segars9604
    @segars9604 9 месяцев назад

    Благодарю за бесценную работ!

  • @kaynsolo
    @kaynsolo 6 лет назад +4

    Very good!

  • @user-gf1zf9um5x
    @user-gf1zf9um5x 5 лет назад +5

    странно что ты забыл упомянуть передачу параметров производного базовому классу через конструктора т.е.
    class B
    {
    public:
    B(){
    cout msg = msg;
    cout

    • @Youtube-pomoyka
      @Youtube-pomoyka 4 года назад

      Видимо забыл, но до тебя уже указали на такую возможность.

    • @satisfiedCapybara
      @satisfiedCapybara 3 года назад

      Спасибо

  • @d1cemovie
    @d1cemovie 6 лет назад +12

    При создании объекта класса "А" мы можем передать параметром строку, содержание которой будет присвоено полю "msg".
    А каким образом мы можем передать в поле "msg" объекта класса "B" строку, не копаясь в теле класса "B" (не проводя там никаких манипуляций с конструктором), а просто передав строку параметром, как с объектом класса "А"?

    • @tesseract8412
      @tesseract8412 6 лет назад +4

      тоже интересовал этот вопрос по мере просмотра видео
      не нашли ответа случайно?

    • @artemtereza669
      @artemtereza669 5 лет назад

      никак,после такого поглядишь на наследование и поймешь что это в принципе вещь пребесполезнейшая. Ну либо конструкторы вообще какие то забагованные.

    • @pubgr862
      @pubgr862 5 лет назад +1

      Artem Tereza а можно по подробнее с момента бесполезности наследования?

    • @pubgr862
      @pubgr862 5 лет назад

      Krechetulya не знаю актуален ли вопрос, но может через дружественный метод ?

    • @artemtereza669
      @artemtereza669 5 лет назад

      @@pubgr862 Не-а) я уже передумал, все норм с этим наследованием

  • @Amoeby
    @Amoeby 3 года назад +4

    А при трёх и более уровнях наследования как вызывать определённые конструкторы на каждом этапе? Какой синтаксис будет?

    • @Alexey_Pe
      @Alexey_Pe 2 года назад

      Наверно
      first ( int x ) { code... this->x=x/2 } // конструктор принимает цифру x
      second ( int y ):first ( y ) { code... this->y=x+6 } // конструктор принимает цифру y и отправляет как x для first
      three ( int z):second ( z ) { code... this->z=z } // конструктор принимает цифру z и отправляет как y для second
      создаю объект класса three
      three myObject( 10 );
      Итог:
      x = 5
      y = 16
      z = 10

  • @dezign_er
    @dezign_er 6 лет назад +10

    Ну вот я и дошёл до "последнего видео". Просмотрел всё от первого по этого (#102) чуть меньше чем за два месяца, большое спасибо автору за труд, всё сказанное в уроках более чем понятно. У меня кстати возникла проблема, после последнего обновления visual studio, с созданием нового проекта. Когда создаю "консольное приложение windows" при последующей компиляции выдаёт ошибку связанную с (#include "stdafx.h"), а если просто создавать пустой проект, то при той же компиляции консоль мгновенно закрывается (и решения типа добавить system("pause") не помогают ). Ну а так всё отлично. Жду нового видео ! P.S. всё хорошо в этих урока, но одно всё же доставляет дискомфорт - это одна и та же композиция на фоне , жуть как приедается после пятого раза, но это только моё мнение.

    • @alexandrgrebnev3229
      @alexandrgrebnev3229 6 лет назад +3

      Ставь, х1.5 и её слышно не будет, я так и не услышал, что за композиция. Автору конечно же огромное спасибо, для переезда на плюсы, просто идеальные уроки. Жду следующих уроков, а пока займусь opencv.

    • @qriest104
      @qriest104 9 месяцев назад

      как сейчас успехи? Стал программистом?

  • @mishanus228
    @mishanus228 2 года назад +1

    СЕРЁГА ТЫ ЛЕГЕНДА!

  • @annademidenko6356
    @annademidenko6356 5 лет назад +3

    👍

  • @user-om4vs8gc8d
    @user-om4vs8gc8d 3 года назад +2

    спасибо)

  • @user-uh2qz2kq2l
    @user-uh2qz2kq2l 3 года назад +3

    похоже на перегрузку конструкторов)

  • @bama2619
    @bama2619 2 года назад

    Спасибо,понятно。

  • @andreyandrey5835
    @andreyandrey5835 3 года назад +4

    А если больше двух наследований тогда как происходит инициализация конструкторов других классах(если их там не один а несколько)?

  • @user-kb6qd8rg4g
    @user-kb6qd8rg4g 4 года назад +1

    спасибо

  • @Mar_doK
    @Mar_doK 2 года назад

    Спасибо!

  • @user-yh9zx6vy1v
    @user-yh9zx6vy1v 2 года назад +3

    Здравствуйте,как можно создать класс прямоугольников rectangle

  • @kyami8718
    @kyami8718 7 месяцев назад +1

    Для тех,кто мб что-то недопонял.
    Когда мы прописали B() : A(.....)
    По факту,вы компилятору говорите: так,ты сначала вызови конструктор базового класса А(....),а потом уже конструктор B()

  • @user-tr6mf1ps5n
    @user-tr6mf1ps5n Год назад

    Nice video 🔥👍😎

  • @aleksandrdrobyshev7623
    @aleksandrdrobyshev7623 4 года назад +1

    Ребят я чет не понял...
    В случае B():A("Наше новое сообщение") - сама строка текстовая как-бы фиксированная.
    Т.е. мы не можем создать объект b с любой желаемой строкой получается? Или я чего-то не понимаю...

    • @carteblanche9165
      @carteblanche9165 4 года назад +6

      Можно
      B(string msg) : A(msg) {...}
      Так мы передаем строку msg в класс А, значит для класса А небходим констуктор:
      A(string msg) {...}

    • @sleepyNovember_project
      @sleepyNovember_project 4 месяца назад

      @@carteblanche9165 но чел был прав, если будет именно так как он описал, то точно не сможем xd

  • @dimaan29
    @dimaan29 4 года назад

    Ну, реально не пойму я эти наследования конструкторов. Я еще понимаю наследования полей, но наследование конструкторов только усложняет и запутывает. Кто, куда и откуда наследовал.

  • @ZnZ
    @ZnZ 6 лет назад

    А может ли класс А наследоваться от класса B, если класс B наследуется от класса A

    • @user-ov4yc6nq2z
      @user-ov4yc6nq2z 5 лет назад +14

      0_о
      Глупый вопрос. Это все равно, что ты бы сам радил себе отца

    • @pubgr862
      @pubgr862 5 лет назад +5

      ISppsd Official а вот тут уже сценарий для фильма)))

    • @user-ut4qe9dw5f
      @user-ut4qe9dw5f 4 года назад +2

      @@user-ov4yc6nq2z ...и лошади едят друг друга!

    • @user-tl9qe9hg5s
      @user-tl9qe9hg5s 4 года назад

      @@pubgr862, а ведь похожий фильм сняли)))

    • @mkiloyan
      @mkiloyan 4 года назад

      @@user-ov4yc6nq2z 😂😂😂😂😂👌

  • @Viamsupervadetvadens
    @Viamsupervadetvadens 6 лет назад +3

    up

  • @notnormal7827
    @notnormal7827 26 дней назад

    2024

  • @borisermolaev3158
    @borisermolaev3158 5 лет назад +6

    Пуставь вместо занудного метала 8-битки какие-нибудь. На манер кряков.
    At Doom's Gate(8bit) например.

  • @tupoy_ytub_uberi_psevdonim
    @tupoy_ytub_uberi_psevdonim 2 года назад

    я все рано не понял. пытаюсь передать а он мне говорит что нельзя string использовать

  • @Sergey-Primak
    @Sergey-Primak 4 года назад

    почему у класса А может быть несколько конструкторов, а у Класса В нужно указывать явно какой конструктор Класса А будет вызываться?
    разве Класс В ущербнее Класса А?!

    • @Kokurorokuko
      @Kokurorokuko 3 года назад

      Потому что прежде чем создать объект класса В, нужно создать объект класса А. Так что да, в каком-то смысле ущербнее.

  • @artyomkazakov9414
    @artyomkazakov9414 Год назад +1

    Спасибо тебе за всё. Нет войне!

  • @Antonov_Ivan.
    @Antonov_Ivan. 7 месяцев назад

    Спасибо за урок!

  • @user-hb7er4ff9u
    @user-hb7er4ff9u 2 года назад +1

    спасибо