Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
1 / 1 / 0
Регистрация: 17.11.2021
Сообщений: 45

Наследование классов

09.04.2025, 18:38. Показов 6196. Ответов 39

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Изучаю наследование классов, но никак не могу понять, в чём ошибка в следующем коде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <list>
 
class Vehicle // основной класс
{
private:
  std::string nameVehicle;
  std::list<std::string> colorsVehicle;
  int MaxSpeedVehicle;
  float priceVehicle;
  std::string typeVehicle;
public:
  void printVehicleInfo () {
    std::cout << "Название транспортного средства: " << nameVehicle << std::endl;
    for (std::string colorsVh: colorsVehicle)
    {
      std::cout << "Цвет транспортного средства: " << colorsVh << std::endl;
    }
    std::cout << "Максимальная скорость " << MaxSpeedVehicle << std::endl;
    std::cout << "Цена транспортного средства: " << priceVehicle << std::endl;
    std::cout << "Тип транспортного средства: " << typeVehicle << std::endl;
  }
 
  Vehicle(std::string name, std::list<std::string> colors, int MaxSpeed, float price, std::string type)
  {
    name = nameVehicle;
    colors = colorsVehicle;
    MaxSpeed = MaxSpeedVehicle;
    price = priceVehicle;
    type = typeVehicle;
  }
};
 
class Car: public Vehicle // наследующий класс
{
  public:
  Car(std::string nameCar, std::list<std::string> colorsCar,  int MaxSpeedCar, float priceCar, std::string typeCar): Vehicle (nameCar, colorsCar, MaxSpeedCar, priceCar, typeCar)
  {
 
  }
};
 
class Motorcycle: public Vehicle // наследующий класс
{
  public:
  Motorcycle(std::string nameMotorcycle, std::list<std::string> colorsMotorcycle,  int MaxSpeedMotorcycle, float priceMotorcycle, std::string typeMotorcycle): Vehicle (nameMotorcycle, colorsMotorcycle, MaxSpeedMotorcycle, priceMotorcycle, typeMotorcycle)
  {
 
  }
};
 
class Boat: public Vehicle // наследующий класс
{
  public:
  Boat(std::string nameBoat, std::list<std::string> colorsBoat,  int MaxSpeedBoat, float priceBoat, std::string typeBoat): Vehicle (nameBoat, colorsBoat, MaxSpeedBoat, priceBoat, typeBoat)
  {
 
  }
};
 
int main ()
{
  setlocale (LC_ALL, "Russian");
 
  Car Lada2106("LADA", {"белый", "чёрный", "серый"}, 180, 1200900.90, "Автомобиль");
  Motorcycle Upiter("Юпитер", {"оранжевый", "красный", "синий"}, 100, 500900.99, "Мотоцикл");
  Boat Speeder3000 ("Speeder 3000", {"чёрный", "коричневый", "серый"}, 250, 500800.90, "Лодка");
 
  Lada2106.printVehicleInfo();
  std::cout << std::endl;
  Upiter.printVehicleInfo();
  std::cout << std::endl;
  Speeder3000.printVehicleInfo();
 
  system ("pause>0");
}
У меня тут основной класс Vehicle, а также 3 наследуемых класса Car, Motorcycle и Boat. У основного и 3 наследуемых классов реализовал конструктор. Вроде, правильно всё сделал. Программа компилируется, не выводит никаких ошибок, но результат вывода совсем неправильный. Выводит какую-то ерунду, а цвета, которые я реализовал через list
C++
1
std::list<std::string> colorsVehicle
даже не пытается вывести вообще, хотя вывожу, вроде, тоже правильно:
C++
1
2
3
4
    for (std::string colorsVh: colorsVehicle)
    {
      std::cout << "Цвет транспортного средства: " << colorsVh << std::endl;
    }
Подскажите, пожалуйста, в чём дело? Что конкретно не так и почему. Желательно, с объяснениями, потому что изучаю эту тему для себя и искренне желаю разобраться.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.04.2025, 18:38
Ответы с готовыми решениями:

Заменить наследование классов на наследование интерфейсов
#include &lt;iostream&gt; #include &lt;assert.h&gt; using namespace std; int people_on_base = 100; int...

Наследование классов. Копирование производных классов
Здравствуйте всем, у меня такой вопрос: написал код #include &quot;stdafx.h&quot; class A //Создаем...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг...

39
Модератор
Эксперт С++
 Аватар для zss
13789 / 10981 / 6492
Регистрация: 18.12.2011
Сообщений: 29,281
10.04.2025, 20:16
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от aleksevgeny Посмотреть сообщение
system ("pause>0");
Не в тему, но это означает, что вывод сообщения будет сделан в файл с именем "0".
Для подавления сообщения надо
C++
1
system ("pause > NUL");
1
1 / 1 / 0
Регистрация: 17.11.2021
Сообщений: 45
10.04.2025, 20:19  [ТС]
Реальный пример иерархии классов:
Вот я всегда и думал, что чтобы полноценно ООП понять, нужно не на консольных приложениях, а на приложениях с графическим интерфейсом учиться. Там это очевидно лучше всего

Добавлено через 2 минуты
zss, тоже полезная вещь. Не знал об этом, спасибо
0
Модератор
Эксперт С++
 Аватар для zss
13789 / 10981 / 6492
Регистрация: 18.12.2011
Сообщений: 29,281
10.04.2025, 20:20
SmallEvil, Полезнее привести иерархию классов потокового ввода-вывода:
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
10.04.2025, 21:42
Цитата Сообщение от zss Посмотреть сообщение
Полезнее привести иерархию классов потокового ввода-вывода
Тут ios наверное virtual... один экземпляр на всех.

Добавлено через 1 час 19 минут
C++
1
2
3
4
template<
    class CharT,
    class Traits = std::char_traits<CharT>
> class basic_istream : virtual public std::basic_ios<CharT, Traits>
Так и есть.
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
11.04.2025, 12:31
Цитата Сообщение от Алексей1153 Посмотреть сообщение
Просто я к VS 2008 привык
У мня слетела десятка. Сектор выпал на жёстком.
Я устанавливал с резервного старую версию. Там был установлен msvc 2014.
Нашёл на мусорке (т.е интернет), вот такое. (Enterprise
Ключи валяються на гит хаб....


Установил... Старая удаляться не стала, поудалял опционально, что смог.
После обновления винды, (около часа), запустил
0
1 / 1 / 0
Регистрация: 17.11.2021
Сообщений: 45
11.04.2025, 12:44  [ТС]
Наталья8, думаю, и сами это прекрасно знаете, но систему лучше ставить на SSD. Я вот сам до 2023 года сидел на системе, установленной на HDD, а потом впервые попробовал недорогой SATA SSD на 128 Гб, старый комп ожил и запел. В этом году уже новый комп собрал и накатил уже NVMe SSD (ADATA Legend 900 на 1 ТБ), система работает нереально быстро. Впервые винда установилась менее, чем за 10 минут, чему я был очень поражён. Правда, ADATA обманывают покупателей, они сначала выпустили этот SSD с типом памяти TLC, а потом взяли и тихо поменяли память на более худшую и дешёвую QLC, а продают за те же деньги
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
11.04.2025, 12:44
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
11.04.2025, 12:45
Цитата Сообщение от aleksevgeny Посмотреть сообщение
систему лучше ставить на SSD.
Сектора не выпадают... Это да.
Да не хожу я в магазин... На подножном корму.
Есть у меня ssd, резервные копии на нём и лежат.
Даа диск все утилиты показывают как хороший. но сектор может выпасть...
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
11.04.2025, 12:46
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
11.04.2025, 13:00
Запустил инсталлер, он обновился и нашёл последнюю версию msvc 2017.
Обновил её до 15.9
С++ 17 имееться полностью.

Добавлено через 11 минут
Цитата Сообщение от aleksevgeny Посмотреть сообщение
ADATA Legend 900 на 1 ТБ
Он выделываться не будет... Он крякнет сразу весь... Единовременно...
И весь твой один тб, пойдёт по тому самому органу...
0
1 / 1 / 0
Регистрация: 17.11.2021
Сообщений: 45
11.04.2025, 13:04  [ТС]
Цитата Сообщение от Наталья8 Посмотреть сообщение
Он выделываться не будет... Он крякнет сразу весь... Единовременно...
И весь твой один тб, пойдёт по тому самому органу...
Да, есть такой момент у SSD. HDD живут намного дольше, но всё же скорость решает, поэтому SSD. Да и нынче многие новые игры, например, уже требуют SSD, поэтому без них никуда. Хотя для игр, конечно, лучше отдельный SSD прикупить.
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
11.04.2025, 13:26

У сына такой работает очень долго.
Я могу на таком хранить данные.
0
 Аватар для vlisp
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,413
11.04.2025, 17:36
Цитата Сообщение от aleksevgeny Посмотреть сообщение
вообще даже Community редакция, на сколько я знаю, имеет определённые ограничения в плане лицензирования.
Кому она сейчас нужна, если мс выпилили оттуда c++/CLR ???
0
1 / 1 / 0
Регистрация: 17.11.2021
Сообщений: 45
11.04.2025, 17:45  [ТС]
Цитата Сообщение от vlisp Посмотреть сообщение
Кому она сейчас нужна, если мс выпилили оттуда c++/CLR ???
Они не полностью выпилили, можно сделать, если очень захотеть. Надо отдельно ставить компонент из Visual Studio Installer, но сами Microsoft заявили, что не стоит так делать, поэтому Вы, в принципе, правы. На плюсах по большому счёту в Visual Studio остаётся писать либо чистые WinApi приложения (это для извращенцев), либо консольные приложения, ну и библиотеки разные. А так можно и для разработки игр использовать, тот же Unreal Engine, например
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
11.04.2025, 19:14
Можно использовать для сторонних фреймворков, например Qt.
aleksevgeny, не слушайте его, он из тех кому "все не так".

Добавлено через 7 минут
Цитата Сообщение от vlisp Посмотреть сообщение
Кому она сейчас нужна, если мс выпилили оттуда c++/CLR ???
Кому нужно с++/CLI ?
0
фрилансер
 Аватар для Алексей1153
6495 / 5726 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
11.04.2025, 19:15
Цитата Сообщение от vlisp Посмотреть сообщение
c++/CLR
а что это ?
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
11.04.2025, 22:21
Цитата Сообщение от vlisp Посмотреть сообщение
Кому она сейчас нужна, если мс выпилили оттуда c++/CLR ???
CLR - это последнее что кому то надо.

Добавлено через 2 минуты
Цитата Сообщение от aleksevgeny Посмотреть сообщение
это для извращенцев
Ну почему для извращенцев.... Работать надо, молодой человек...
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
11.04.2025, 22:33
Два варианта. Или ты делаешь форму...



Или ты делаешь мессагу...


Текст обрабатывать. Номера строк убирать.
А больше я не знаю, что с ним делать.
Может быть потом что то в голову придёт.

C++
1
2
3
DialogBoxIndirectParamW(0,
                reinterpret_cast<LPDLGTEMPLATE>(L"\0\0\0\0\0\0\0" L"~d"
                    L"\0\0Your actions"), 0, (DLGPROC)Dlg, 0);
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
12.04.2025, 03:14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// DWORD    двойное слово (4 байт) хранилища для каждого инициализатора.  
        //  Тип Word - это целочисленный беззнаковый тип данных, в два байта.
            RECT pos_cons{};
            GetWindowRect( GetConsoleWindow() , &pos_cons);
        //    left   Задает координату x верхнего левого угла прямоугольника.
        //   top  Задает координату Y верхнего левого угла прямоугольника.
            
            wchar_t dfx[] = L"\0\0\0\0\0\0\0" L"~d"// Строка wchar_t не константная. 
                L"\0\0Your actions"; // я могу её изменять
            DWORD *style = (DWORD*)dfx;// Привинчиваю два указателя, вваливаю стили и позицию по координатам.
            short *dfx_n = (short*)dfx;
        dfx_n += 5; *dfx_n = pos_cons.left/2+20;
            *(++dfx_n) = pos_cons.top/2+20;
  *style = WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
                | DS_MODALFRAME | DS_3DLOOK | DS_SETFONT;
Вот я напрягся... Но красиво...
Си + winApi это изврат...
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
12.04.2025, 03:50
C++ CLI это вот это вот... Вот такое...
Фрамеворк изменился и теперь я вот на это всё время смотрю...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.04.2025, 03:50

Автоматическая генерация классов С ++ с UML диаграмм классов. Наследование в с++. Абстрактные классы. WhiteStarUML
Создать классовую модель(желательно в WhiteStarUML), которая включает в себя абстрактный класс...

Определение классов, описание экземпляров классов (объектов). Уровни доступа к членам классов
Определить класс с именем Dyscyplina, что абстрагирует понятие &quot;Учебная дисциплина&quot; и содержит...

Наследование наследование )
Доброе время суток всем! Делаю одно задание и столкнулся с вопросом У меня есть клас Person и...

Наследование шаблоном шаблона (наследование конструктора)
Всем привет! Думаю, что эта тема хоть и касается общих вопросов программирования, но будет уместна...

решение задачи Конструкторы и деструкторы, Наследование, Множественное наследование. Полиморфизм
Задания такие Что зачеркнуто вроде сделано правильно) Если есть люди добрые не могли бы вы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж» Уважаемые коллеги! Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru