Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
 Аватар для HaRuKy
5 / 5 / 3
Регистрация: 20.03.2011
Сообщений: 299

Конструктор и деструктор

22.03.2014, 08:59. Показов 1719. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
В программе не работает конструктор с параметрами! Можете подсказать чего я не так делаю?
Задание: есть класс изделия, содержащий следующие поля:
имя – char*
шифр – char*
количество – int

Текст программы:
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
#include <iostream.h>
class izd
 {  private:
     char name[10];
     char code[10];
     int count;
    public:
    izd(): count(3)      //constr_bez_param
      {
           strcpy(name,"Panasonic");
       strcpy(code,"W2210");
       cout<<"constr_1"<<endl;
       show();
          }
       // ~izd(){}
       izd(char _name,char _code, int _count)       //constr_s_param
      {
           name=_name;
           code=_code;
           count=_count;
           cout<<"constr_2"<<endl;
           show();
      }
    void show()
      {
       cout<<name<<endl;
       cout<<code<<endl;
       cout<<count<<endl;
      }
        void input()
      {
       cout<<"\n Name:";  cin>>name;
       cout<<"\n Code:";  cin>>code;
           cout<<"\n Count:"; cin>>count;
      }
 
 };
 
 void main()
{
 izd model;
 model.input();
 model.show();
 system("pause");
 return;
}
Благодарю за ранее!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2014, 08:59
Ответы с готовыми решениями:

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

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

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

8
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
22.03.2014, 10:02
C++
1
2
3
4
5
6
izd(char* _name,char* _code, int _count)       //constr_s_param
      {
           strcpy(name,_name);
           strcpy(code,_code);
           count=_count;
       }
1
 Аватар для HaRuKy
5 / 5 / 3
Регистрация: 20.03.2011
Сообщений: 299
22.03.2014, 11:44  [ТС]
zss, можете подсказать, а почему при компиляции программы отображается только первый конструктор, а второй не отображается?
Миниатюры
Конструктор и деструктор  
0
 Аватар для MicM
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
22.03.2014, 11:57
HaRuKy, в данном случае он и не должен вызываться.
У тебя есть 2 конструктора, один с параметрами, другой - по умолчанию. Т.к. при создании объекта, ты не указываешь никакие параметры, то и вызывается первый конструктор. Если же написал бы, например:
C++
1
izd model ("one", "two", 1);
то, вызвался бы второй конструктор
1
 Аватар для HaRuKy
5 / 5 / 3
Регистрация: 20.03.2011
Сообщений: 299
22.03.2014, 12:38  [ТС]
Осталось добавить конструктор копирования
Написал код конструктора копирования по образцу, но не понимаю как он работает
В главную функцию добавлю переменную model2 класс izd, но при компиляции 3й конструктор не отображается

C++
1
2
3
4
5
izd ( izd &s){//constr_copy
    name[50]=s.name[50];
    code[30]=s.code[30];
    count=s.count;
}
C++
1
2
3
4
5
6
7
8
9
10
void main()
{
 izd model;
 izd model1("Canon","LBP3200",5);
 izd model2();
 model.input();
 model.show();
 system("pause");
 return;
}
Миниатюры
Конструктор и деструктор  
0
 Аватар для MicM
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
22.03.2014, 13:02
Цитата Сообщение от HaRuKy Посмотреть сообщение
Осталось добавить конструктор копирования
Лишнее. Компилятор автоматически генерирует подобный конструктор.
http://ru.wikipedia.org/wiki/К... опирования
C++
1
2
3
4
5
6
7
8
9
void main()
{
 izd model;
 izd model1("Canon","LBP3200",5);
 izd model2 (model1);
 model2.show();
 system("pause");
 return 0;
}
Посмотрите на результат.
1
 Аватар для HaRuKy
5 / 5 / 3
Регистрация: 20.03.2011
Сообщений: 299
22.03.2014, 13:15  [ТС]
Копирует тип int правильно, а вот тип char не совсем
В результате компиляции я получаю следующее сообщение:
Миниатюры
Конструктор и деструктор  
0
 Аватар для MicM
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
22.03.2014, 13:25
HaRuKy, я так понял, вы все-таки хотите реализовать свой конструктор копирования, тогда попробуйте в методе так написать:
C++
1
2
3
4
5
6
izd (izd& s)//constr_copy
{
    strcpy (name, s.name);
    strcpy (code, s.code);
    count = s.count;
}
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
#include <iostream>
#include <cstring>
using namespace std;
 
class izd
 {  private:
     char name[10];
     char code[10];
     int count;
    public:
    izd(): count(3)      //constr_bez_param
      {
           strcpy(name,"Panasonic");
       strcpy(code,"W2210");
       cout<<"constr_1"<<endl;
       show();
          }
       // ~izd(){}
    izd(char* _name,char* _code, int _count)       //constr_s_param
      {
           strcpy(name,_name);
           strcpy(code,_code);
           count=_count;
           cout <<"constr_s_pa\n";
       }
    void show()
      {
       cout<<name<<endl;
       cout<<code<<endl;
       cout<<count<<endl;
      }
        void input()
      {
       cout<<"\n Name:";  cin>>name;
       cout<<"\n Code:";  cin>>code;
           cout<<"\n Count:"; cin>>count;
      }
 
 };
 
void main()
{
izd model;
 izd model1("Canon","LBP3200",5);
 izd model2(model1);
 model2.show();
 system("pause");
 return;
}
Посмотрите на результат выполнения, и увидите, что необязательно самим писать конструктор копирования
1
 Аватар для HaRuKy
5 / 5 / 3
Регистрация: 20.03.2011
Сообщений: 299
22.03.2014, 13:29  [ТС]
Все понял! Благодарю за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.03.2014, 13:29
Помогаю со студенческими работами здесь

Конструктор и деструктор
Помогите к этой программе написать Конструктор и деструктор класса #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; ...

Конструктор и деструктор
Всем привет.Вообщем передо мной стоит такая задача-Отобразить на экране время работы программы, используя конструктор и деструктор.В...

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru