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

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

22.03.2014, 08:59. Просмотров 1050. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.03.2014, 08:59
Ответы с готовыми решениями:

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

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

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

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

8
Модератор
Эксперт С++
9918 / 8441 / 5129
Регистрация: 18.12.2011
Сообщений: 22,597
22.03.2014, 10:02 2
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
5 / 5 / 3
Регистрация: 20.03.2011
Сообщений: 299
22.03.2014, 11:44  [ТС] 3
zss, можете подсказать, а почему при компиляции программы отображается только первый конструктор, а второй не отображается?
0
Миниатюры
Конструктор и деструктор  
834 / 492 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
22.03.2014, 11:57 4
HaRuKy, в данном случае он и не должен вызываться.
У тебя есть 2 конструктора, один с параметрами, другой - по умолчанию. Т.к. при создании объекта, ты не указываешь никакие параметры, то и вызывается первый конструктор. Если же написал бы, например:
C++
1
izd model ("one", "two", 1);
то, вызвался бы второй конструктор
1
5 / 5 / 3
Регистрация: 20.03.2011
Сообщений: 299
22.03.2014, 12:38  [ТС] 5
Осталось добавить конструктор копирования
Написал код конструктора копирования по образцу, но не понимаю как он работает
В главную функцию добавлю переменную 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
Миниатюры
Конструктор и деструктор  
834 / 492 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
22.03.2014, 13:02 6
Цитата Сообщение от 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
5 / 5 / 3
Регистрация: 20.03.2011
Сообщений: 299
22.03.2014, 13:15  [ТС] 7
Копирует тип int правильно, а вот тип char не совсем
В результате компиляции я получаю следующее сообщение:
0
Миниатюры
Конструктор и деструктор  
834 / 492 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
22.03.2014, 13:25 8
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
5 / 5 / 3
Регистрация: 20.03.2011
Сообщений: 299
22.03.2014, 13:29  [ТС] 9
Все понял! Благодарю за помощь!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2014, 13:29

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Конструктор и деструктор
На сколько сильно они нужны и можно ли обойтись без них? Что будет если их не описывать? Что...

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.