Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
HaRuKy
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 300
#1

Конструктор и деструктор - C++

22.03.2014, 08:59. Просмотров 583. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2014, 08:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конструктор и деструктор (C++):

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

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

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

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

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

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

8
zss
Модератор
Эксперт С++
6403 / 5969 / 1945
Регистрация: 18.12.2011
Сообщений: 15,370
Завершенные тесты: 1
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
HaRuKy
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 300
22.03.2014, 11:44  [ТС] #3
zss, можете подсказать, а почему при компиляции программы отображается только первый конструктор, а второй не отображается?
0
Миниатюры
Конструктор и деструктор  
MicM
822 / 480 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
22.03.2014, 11:57 #4
HaRuKy, в данном случае он и не должен вызываться.
У тебя есть 2 конструктора, один с параметрами, другой - по умолчанию. Т.к. при создании объекта, ты не указываешь никакие параметры, то и вызывается первый конструктор. Если же написал бы, например:
C++
1
izd model ("one", "two", 1);
то, вызвался бы второй конструктор
1
HaRuKy
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 300
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
Миниатюры
Конструктор и деструктор  
MicM
822 / 480 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
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
HaRuKy
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 300
22.03.2014, 13:15  [ТС] #7
Копирует тип int правильно, а вот тип char не совсем
В результате компиляции я получаю следующее сообщение:
0
Миниатюры
Конструктор и деструктор  
MicM
822 / 480 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
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
HaRuKy
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 300
22.03.2014, 13:29  [ТС] #9
Все понял! Благодарю за помощь!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2014, 13:29
Привет! Вот еще темы с ответами:

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

С++. Конструктор, деструктор - C++
Ребята!!! Помогите пожалуйста, не знаю как сделать это задание на С++. Нужно разработать класс Point для работы с пользовательским...

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

Конструктор и деструктор - C++
Нужно чтобы деструктор отработал до завершения программы #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstring&gt; #include...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
22.03.2014, 13:29
Ответ Создать тему
Опции темы

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