@@ДмитрийРаннев-л1у Как и любую функцию-член: class Type : public base { public: Type(...); //просто объявление конструктора ... }; // реализация вынесенная вне класса: Type::Type(...):base(...) { .... }
Лайк я конечно поставлю, спасибо что сделали доброе дело. От себя добавлю то, о чём тут не рассказано. (см момент 7:01 ) Новички часто сталкиваются с затруднениями при описании конструктора дочернего класса ВНЕ ТЕЛА КЛАССА. А делать надо так: class B : public A { public: B(); // тут мы не пишем вызов конструктора класса A }; B::B(): A("наше новое сообщение") // а тут пишем { }
Так давайте ещё разделим реализацию методов класса и их прототипы в отдельные файлы .cpp и .h соответственно. Так будет ещё не понятнее но зато ПРАВИЛЬНО!
Посмотрел уроки до этого, решил порешать задачи и столкнулся как раз с этой проблемой. Подумал, что не усвоил какие-то моменты, сразу зашёл на канал и увидел, что следующее видео как раз на эту тему:) Большое Спасибо!
При создании объекта класса "А" мы можем передать параметром строку, содержание которой будет присвоено полю "msg". А каким образом мы можем передать в поле "msg" объекта класса "B" строку, не копаясь в теле класса "B" (не проводя там никаких манипуляций с конструктором), а просто передав строку параметром, как с объектом класса "А"?
Наверно 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
Для тех,кто мб что-то недопонял. Когда мы прописали B() : A(.....) По факту,вы компилятору говорите: так,ты сначала вызови конструктор базового класса А(....),а потом уже конструктор B()
Ну вот я и дошёл до "последнего видео". Просмотрел всё от первого по этого (#102) чуть меньше чем за два месяца, большое спасибо автору за труд, всё сказанное в уроках более чем понятно. У меня кстати возникла проблема, после последнего обновления visual studio, с созданием нового проекта. Когда создаю "консольное приложение windows" при последующей компиляции выдаёт ошибку связанную с (#include "stdafx.h"), а если просто создавать пустой проект, то при той же компиляции консоль мгновенно закрывается (и решения типа добавить system("pause") не помогают ). Ну а так всё отлично. Жду нового видео ! P.S. всё хорошо в этих урока, но одно всё же доставляет дискомфорт - это одна и та же композиция на фоне , жуть как приедается после пятого раза, но это только моё мнение.
Ставь, х1.5 и её слышно не будет, я так и не услышал, что за композиция. Автору конечно же огромное спасибо, для переезда на плюсы, просто идеальные уроки. Жду следующих уроков, а пока займусь opencv.
Ребят я чет не понял... В случае B():A("Наше новое сообщение") - сама строка текстовая как-бы фиксированная. Т.е. мы не можем создать объект b с любой желаемой строкой получается? Или я чего-то не понимаю...
Чтобы число тоже можно было передать: class A { public: A() { msg = "Пустое сообщение"; } A(string msg) { this->msg = msg; } A(string msg, int a) { this->msg = msg; this->a = a; } void PrintMsg() { cout
Ну, реально не пойму я эти наследования конструкторов. Я еще понимаю наследования полей, но наследование конструкторов только усложняет и запутывает. Кто, куда и откуда наследовал.
почему у класса А может быть несколько конструкторов, а у Класса В нужно указывать явно какой конструктор Класса А будет вызываться? разве Класс В ущербнее Класса А?!
*Друзья, если вы решили изучать программирование и подписались на канал - рекомендую вам нажать колокольчик чтобы никогда не пропускать новые уроки!*
если хотите, чтобы параметры к конструктору В шли в конструктор А
B(int a):A(a)
Спасибо
+1
Можно это реализовать вне класса?
@@ДмитрийРаннев-л1у Как и любую функцию-член:
class Type : public base
{
public:
Type(...); //просто объявление конструктора
...
};
// реализация вынесенная вне класса:
Type::Type(...):base(...)
{
....
}
Молодец спосибо
Лайк я конечно поставлю, спасибо что сделали доброе дело. От себя добавлю то, о чём тут не рассказано. (см момент 7:01 ) Новички часто сталкиваются с затруднениями при описании конструктора дочернего класса ВНЕ ТЕЛА КЛАССА.
А делать надо так:
class B : public A
{
public:
B(); // тут мы не пишем вызов конструктора класса A
};
B::B(): A("наше новое сообщение") // а тут пишем
{
}
лооооооооооооооол ок
Так давайте ещё разделим реализацию методов класса и их прототипы в отдельные файлы .cpp и .h соответственно. Так будет ещё не понятнее но зато ПРАВИЛЬНО!
#конструкторбазовогокласса #ООП #SimpleCode #урокипрограммирования
Сергей, Ваша способность доходчиво обьяснить просто поражает. Спасибо, ОГРОМНОЕ.
Спасибо за урок
Посмотрел уроки до этого, решил порешать задачи и столкнулся как раз с этой проблемой. Подумал, что не усвоил какие-то моменты, сразу зашёл на канал и увидел, что следующее видео как раз на эту тему:) Большое Спасибо!
А где задачки решал не подскажешь?
Спасибо за отличный урок!
привет из 2023. Спасибо большое за уроки!
Спасибо . Хорошо сделал видео уроки ! Жаль заданий нету
божечки, мне это видео очень сильно помогло!
спасибо больше!
Сергей, спасибо за Ваши видео!
При создании объекта класса "А" мы можем передать параметром строку, содержание которой будет присвоено полю "msg".
А каким образом мы можем передать в поле "msg" объекта класса "B" строку, не копаясь в теле класса "B" (не проводя там никаких манипуляций с конструктором), а просто передав строку параметром, как с объектом класса "А"?
тоже интересовал этот вопрос по мере просмотра видео
не нашли ответа случайно?
никак,после такого поглядишь на наследование и поймешь что это в принципе вещь пребесполезнейшая. Ну либо конструкторы вообще какие то забагованные.
Artem Tereza а можно по подробнее с момента бесполезности наследования?
Krechetulya не знаю актуален ли вопрос, но может через дружественный метод ?
@@pubgr862 Не-а) я уже передумал, все норм с этим наследованием
Спасибо
Благодарю за бесценную работ!
Спасибо за урок)
странно что ты забыл упомянуть передачу параметров производного базовому классу через конструктора т.е.
class B
{
public:
B(){
cout msg = msg;
cout
Видимо забыл, но до тебя уже указали на такую возможность.
Спасибо
благодарю вас!
А при трёх и более уровнях наследования как вызывать определённые конструкторы на каждом этапе? Какой синтаксис будет?
Наверно
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
Для тех,кто мб что-то недопонял.
Когда мы прописали B() : A(.....)
По факту,вы компилятору говорите: так,ты сначала вызови конструктор базового класса А(....),а потом уже конструктор B()
СЕРЁГА ТЫ ЛЕГЕНДА!
похоже на перегрузку конструкторов)
Спасибо за урок))
Ну вот я и дошёл до "последнего видео". Просмотрел всё от первого по этого (#102) чуть меньше чем за два месяца, большое спасибо автору за труд, всё сказанное в уроках более чем понятно. У меня кстати возникла проблема, после последнего обновления visual studio, с созданием нового проекта. Когда создаю "консольное приложение windows" при последующей компиляции выдаёт ошибку связанную с (#include "stdafx.h"), а если просто создавать пустой проект, то при той же компиляции консоль мгновенно закрывается (и решения типа добавить system("pause") не помогают ). Ну а так всё отлично. Жду нового видео ! P.S. всё хорошо в этих урока, но одно всё же доставляет дискомфорт - это одна и та же композиция на фоне , жуть как приедается после пятого раза, но это только моё мнение.
Ставь, х1.5 и её слышно не будет, я так и не услышал, что за композиция. Автору конечно же огромное спасибо, для переезда на плюсы, просто идеальные уроки. Жду следующих уроков, а пока займусь opencv.
как сейчас успехи? Стал программистом?
А если больше двух наследований тогда как происходит инициализация конструкторов других классах(если их там не один а несколько)?
Very good!
Здравствуйте,как можно создать класс прямоугольников rectangle
👍
спасибо)
Ребят я чет не понял...
В случае B():A("Наше новое сообщение") - сама строка текстовая как-бы фиксированная.
Т.е. мы не можем создать объект b с любой желаемой строкой получается? Или я чего-то не понимаю...
Можно
B(string msg) : A(msg) {...}
Так мы передаем строку msg в класс А, значит для класса А небходим констуктор:
A(string msg) {...}
@@carteblanche9165 но чел был прав, если будет именно так как он описал, то точно не сможем xd
Nice video 🔥👍😎
Спасибо!
Чтобы число тоже можно было передать:
class A
{
public:
A()
{
msg = "Пустое сообщение";
}
A(string msg)
{
this->msg = msg;
}
A(string msg, int a)
{
this->msg = msg;
this->a = a;
}
void PrintMsg()
{
cout
Ну, реально не пойму я эти наследования конструкторов. Я еще понимаю наследования полей, но наследование конструкторов только усложняет и запутывает. Кто, куда и откуда наследовал.
Димон, разобрался?
А может ли класс А наследоваться от класса B, если класс B наследуется от класса A
0_о
Глупый вопрос. Это все равно, что ты бы сам радил себе отца
ISppsd Official а вот тут уже сценарий для фильма)))
@@ISppsd ...и лошади едят друг друга!
@@pubgr862, а ведь похожий фильм сняли)))
@@ISppsd 😂😂😂😂😂👌
Пуставь вместо занудного метала 8-битки какие-нибудь. На манер кряков.
At Doom's Gate(8bit) например.
Спасибо тебе за всё. Нет войне!
Слава России
и сюда политикц впихнули
@@pilipzero1149он болеет😢
up
2024
я все рано не понял. пытаюсь передать а он мне говорит что нельзя string использовать
почему у класса А может быть несколько конструкторов, а у Класса В нужно указывать явно какой конструктор Класса А будет вызываться?
разве Класс В ущербнее Класса А?!
Потому что прежде чем создать объект класса В, нужно создать объект класса А. Так что да, в каком-то смысле ущербнее.
Спасибо за урок.
Спасибо за урок!
Спасибо,понятно。
спасибо
👍
Спасибо за урок!
спасибо