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

Конструктор и деструктор в С++

11.03.2019, 20:44. Показов 3001. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Никак не могу найти ошибку. Выдает несоответствие результата и функции
/gkh.cpp/
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <string>
#include <fstream>
#include "gkh.h"
 
Gkhs::~Gkhs() {
    Gkhs::save();
}
void Gkhs::save() {
    std::ofstream fout("gkhs.txt", std::ios::app);
    fout << Gkhs::get_name() << " "
        << Gkhs::get_last_name() << " ";
    for (int i = 0; i < 5; ++i) {
        fout << Gkhs::sc[i] << " ";
        fout << Gkhs::vsa_sum << " ";
    }
    fout << std::endl;
 
    fout.close();
}
Gkhs::Gkhs(std::string name, std::string last_name) {
    Gkhs::set_name(name);
    Gkhs::set_last_name(last_name);
}
void Gkhs::set_name(std::string gkh_name) {
    Gkhs::name = gkh_name;
}
std::string Gkhs::get_name() {
    return Gkhs::name;
}
void Gkhs::set_last_name(std::string gkh_last_name) {
    Gkhs::last_name = gkh_last_name;
}
std::string Gkhs::get_last_name() {
    return Gkhs::last_name;
}
void Gkhs::set_sc(float sc[]) {
    float sum = 0;
    for (int i = 0; i < 5; ++i) {
        Gkhs::sc[i] = sc[i];
         sum += sc[i];  
    }
}
float *Gkhs::get_sc() {
    return Gkhs::sc;
}
void Gkhs::set_vsa_sum(float sum) {
    Gkhs::vsa_sum = sum;
}
float *Gkhs::get_vsa_sum() {
    return Gkhs::vsa_sum;
}
 
/gkh.h/
#pragma once 
#include <string>
class Gkhs {
public:
    void save();
    ~Gkhs();
    Gkhs(std::string, std::string);
 
    void set_name(std::string);
    std::string get_name();
 
    void set_last_name(std::string);
    std::string get_last_name();
 
    void set_sc(float[]);
    float *get_sc();
    std::string get_sc_str(char);
 
    void set_vsa_sum(float);
    float *get_vsa_sum();
    std::string get_vsa_sum_str(char);
private:
    float sc[5];
    float vsa_sum;
    std::string name;
    std::string last_name;
};
 
/main.cpp/
#include <iostream>
#include "gkh.h"
int main(int argc, char *argv[]) {
    std::string name;
    std::string last_name;
    std::cout << "Name: ";
    getline(std::cin, name);
    std::cout << "Last name: ";
    getline(std::cin, last_name);
 
    Gkhs *gkh = new Gkhs(name, last_name);
    float sc[5];
    float sum = 0;
    std::string gkh_sc[] = { " gas : ", " h.voda : ", " teplo : ", " drova : ", " g.voda : " };
    int k = 0;
    for (int i = 0; i < 5; ++i) {
        std::cout << "usluga " << gkh_sc[k++];
        std::cin >> sc[i];
        sum = sum + sc[i];
    }
    gkh->set_sc(sc);
    float vsa_sum = sum;
    gkh->set_vsa_sum(vsa_sum);
    std::cout << " Sum for " << gkh->get_name() << " "
        << gkh->get_last_name() << " is "
        << gkh->get_vsa_sum() << std::endl;
    delete gkh;
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.03.2019, 20:44
Ответы с готовыми решениями:

Конструктор инициализации, конструктор копирования, деструктор
Я сделал почти задание по перегрузке операторов. Осталось одно, тоесть три: конструктор инициализации, конструктор копирования, деструктор....

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор
Всем доброго времени суток! нужна ваша помощь! нужно создать класс вектор и реализовать конструктор по умолчанию, копирования и...

конструктор и деструктор
помоги пожалуйста написать программу в которой создаются и разрушаются объекты определенного пользовательского класса.Выполнить...

30
 Аватар для zayats80888
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
12.03.2019, 16:19
Студворк — интернет-сервис помощи студентам
Разрешение имени в реализации методов обычно используется для перегруженых методов, просто так лепить их избыточно

Добавлено через 2 минуты
Цитата Сообщение от rat0r Посмотреть сообщение
скрытого в отнаследовавшемся
ну из private предка ты и так ничего не вытащишь, а остальное доступно и так
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
12.03.2019, 16:27
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
покажите пример пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class B
{
public:
   void foo();
};
 
class D : public B
{
public:
    void foo(); // метод B::foo - скрыт
};
 
void D::foo()
{
   // Что-то делаем и вызываем базовую реализацию.
   B::foo(); // this->foo(); приведет к рекурсии
}
1
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
12.03.2019, 16:31
DrOffset, я делал акцент на "скрытого в отнаследовавшемся". Если виден - значит не скрыт, а если скрыт - то не виден. Вообщем тавтология вышла как по мне, что сама себя убивает и такого варианта не может быть.
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
12.03.2019, 16:33
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Я такого не видел - покажите пример пожалуйста
Вы когда цитировали сообщение, не обратили внимание на следующее же предложение, и строчку ниже?

Цитата Сообщение от rat0r Посмотреть сообщение
Например, в операторе присваивания
D& D::operator(const D& that) { Base::operator=(that); ... }
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
12.03.2019, 16:36
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
скрытого в отнаследовавшемся
Я именно это и показал.

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Если виден - значит не скрыт, а если скрыт - то не виден.
Имя метода B::foo - скрыто. Это обычные правила сокрытия имен в С++. И термин для С++ тоже обычный.
1
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
12.03.2019, 16:36
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Я такого не видел - покажите пример
...
Цитата Сообщение от rat0r Посмотреть сообщение
Например, в операторе присваивания
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
12.03.2019, 16:38
Цитата Сообщение от rat0r Посмотреть сообщение
Никогда не видел вызов метода базового класса, скрытого в отнаследовавшемся?
но у ТС же нет ни базового класса, ни наследника, свои же методы вызывает
0
12.03.2019, 16:40

Не по теме:

Цитата Сообщение от rat0r Посмотреть сообщение
...
У него на самом деле затруднение с термином "скрыто", а не с примером.

0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
12.03.2019, 16:42
DrOffset, Да признаю свою ошибку, подумал что эта фича называется overlap (перекрытие функции базового класса), но с стандартом не поспоришь hides rather than overloading it

0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
12.03.2019, 17:21
Цитата Сообщение от zayats80888 Посмотреть сообщение
ну из private предка ты и так ничего не вытащишь
private это не про видимость, а про доступность (accessibility)
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
12.03.2019, 17:49
Цитата Сообщение от ValeryS Посмотреть сообщение
но у ТС же нет ни базового класса, ни наследника, свои же методы вызывает
ValeryS, метод объекта не принадлежит объекту. Он принадлежит классу, но запускается в контексте объекта. Указатели на нестатические методы тоже используют квалифицированное имя. Хотя синтаксис избыточен, когда дело касается простых определений в классе. В шаблонах может быть для общности и может такое получаться, но я тоже не видел ссылок на себя в таком виде. Для базовых классов (особенно, когда их несколько и они содержат одинаковые имена), это нормальная практика. Или при наличии виртуального переопределённого, доступ к методу базового... или доступ к реализации чисто виртуального по умолчанию. Всё это может быть, но доступ к своему через полное разрешение, - разве-что для подколки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.03.2019, 17:49

Конструктор/деструктор
Подскажите пожалуйста как внедрить в вот эту программу конструктор и деструктор... В программе есть базовый класс (летательные аппараты)...

конструктор и деструктор в C++
Помогите добавить в прогу конструктор и деструктор #include &lt;iostream&gt; using namespace std; class preamougolinik { private: ...

Конструктор, деструктор
Дорогие друзья, программисты. Помогите пожалуйста разобраться с конструктором и деструктором, а так же перегрузкой. Фотография прилагается...

Конструктор и деструктор
Помогите к этой программе написать Конструктор и деструктор класса #include &lt;iostream&gt; using namespace std; class card { ...

конструктор и деструктор
Почему деструктор не вызывается? #include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; class myclass{ float a; ...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru