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

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

09.04.2025, 18:38. Показов 5966. Ответов 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
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
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
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
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
 Аватар для Наталья8
522 / 372 / 66
Регистрация: 09.03.2016
Сообщений: 3,940
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
 Аватар для Наталья8
522 / 372 / 66
Регистрация: 09.03.2016
Сообщений: 3,940
11.04.2025, 12:44
0
 Аватар для Наталья8
522 / 372 / 66
Регистрация: 09.03.2016
Сообщений: 3,940
11.04.2025, 12:45
Цитата Сообщение от aleksevgeny Посмотреть сообщение
систему лучше ставить на SSD.
Сектора не выпадают... Это да.
Да не хожу я в магазин... На подножном корму.
Есть у меня ssd, резервные копии на нём и лежат.
Даа диск все утилиты показывают как хороший. но сектор может выпасть...
0
 Аватар для Наталья8
522 / 372 / 66
Регистрация: 09.03.2016
Сообщений: 3,940
11.04.2025, 12:46
0
 Аватар для Наталья8
522 / 372 / 66
Регистрация: 09.03.2016
Сообщений: 3,940
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
 Аватар для Наталья8
522 / 372 / 66
Регистрация: 09.03.2016
Сообщений: 3,940
11.04.2025, 13:26

У сына такой работает очень долго.
Я могу на таком хранить данные.
0
 Аватар для vlisp
1063 / 984 / 153
Регистрация: 10.08.2015
Сообщений: 5,348
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
6451 / 5652 / 1129
Регистрация: 11.10.2019
Сообщений: 15,054
11.04.2025, 19:15
Цитата Сообщение от vlisp Посмотреть сообщение
c++/CLR
а что это ?
0
 Аватар для Наталья8
522 / 372 / 66
Регистрация: 09.03.2016
Сообщений: 3,940
11.04.2025, 22:21
Цитата Сообщение от vlisp Посмотреть сообщение
Кому она сейчас нужна, если мс выпилили оттуда c++/CLR ???
CLR - это последнее что кому то надо.

Добавлено через 2 минуты
Цитата Сообщение от aleksevgeny Посмотреть сообщение
это для извращенцев
Ну почему для извращенцев.... Работать надо, молодой человек...
0
 Аватар для Наталья8
522 / 372 / 66
Регистрация: 09.03.2016
Сообщений: 3,940
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
 Аватар для Наталья8
522 / 372 / 66
Регистрация: 09.03.2016
Сообщений: 3,940
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
 Аватар для Наталья8
522 / 372 / 66
Регистрация: 09.03.2016
Сообщений: 3,940
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
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru