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

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

22.03.2014, 08:59. Показов 1669. Ответов 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
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,237
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru