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

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

Войти
Регистрация
Восстановить пароль
 
rura
0 / 0 / 0
Регистрация: 08.01.2014
Сообщений: 153
#1

Создать не менее двух конструкторов в классе, в том числе — по умолчанию - C++

20.05.2014, 02:00. Просмотров 311. Ответов 3
Метки нет (Все метки)

Доброго времени суток.
Помогите пожалуйста сделать конструкторы для моей программы. А именно создать не менее двух конструкторов, в том числе - по умолчанию,конструктор копирования с динамическим выделением памяти, деструктор. Нужно использовать указатель this, для динамического выделения памяти - new.

Вот моя программа:
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
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
///////////////////////////// 6.4 ///////////////////////////////////////
#include "stdafx.h"
#include <iostream>
using namespace std;
 
class CLASS
{
    struct NOTE
    {
        char Family[100];
        char Name[100];
        int Phone;
        int Birthday;
        int Birthmonth;
        int Birthyear;
    };
public:
    void func();
}ob;
 
 
void CLASS::func()
{
    const int n = 2;
    int j;
 
    NOTE people[n];
    for (int i = 0; i < n; i++)
    {
        cout << "Фамилия №" << i << ":";
        cin >> people[i].Family;
        cout << "Имя:";
        cin >> people[i].Name;
        cout << "Дата рождения:" << endl;
        cout << "день:";
        cin >> people[i].Birthday;
        cout << "номер месяца:";
        cin >> people[i].Birthmonth;
        cout << "год:";
        cin >> people[i].Birthyear;
        cout << "Телефон:";
        cin >> people[i].Phone;
        cout << endl; cout << endl;
    }
 
    cout << "Введите номер месяца (1..12):";
    cin >> j;
    int m = 0;
 
    for (int i = 0; i < n; i++)
    {
        if (people[i].Birthmonth == j)
        {
 
            cout << "Фамилия №" << i << ":";
            cout << people[i].Family; cout << endl;
            cout << "Имя:";
            cout << people[i].Name; cout << endl;
            cout << "Дата рождения:" << endl;
            cout << "день:";
            cout << people[i].Birthday; cout << endl;
            cout << "номер месяца:";
            cout << people[i].Birthmonth; cout << endl;
            cout << "год:";
            cout << people[i].Birthyear; cout << endl;
            cout << "Телефон:";
            cout << people[i].Phone; cout << endl;
            cout << endl; cout << endl;
            m++;
        }
    }
 
 
 
    if (m == 0)
    {
        cout << "Людей с таким месяцем рождения в списке NOTE нет!";
    }
}
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "RUS");
 
    ob.func();
    
    system("pause");
    return 0;
}

Вот я попробовал сделать конструкторы. По умолчанию и с параметрами.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private: 
 
    int m;
 
public:
 
    CLASS()
    {
        setlocale(LC_ALL, "RUS");
        cout << "Работает конструктор." << endl;
    }
 
    CLASS(int M)
    {
        m = M;
    }   
 
    void func();
}ob;
С ними программа вроде работает. Правильно ли они написаны?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2014, 02:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать не менее двух конструкторов в классе, в том числе — по умолчанию (C++):

Создать не менее двух конструкторов - C++
Здравствуйте, Помогите пожалуйста сделать конструкторы для моей программы. А именно создать не менее двух конструкторов, в том числе - по...

Напечатать слова из двух заданных предложений, которые есть только в одном из них (в том числе повторяющиеся) - C++
Даны два предложения. Напечатать слова, которые есть только в одном! Из них (из них в том числе повторяющиеся)

Как поступить, если необходимо создать массив экземпляров класса, но в классе нет конструктора по умолчанию? - C++
Как поступить, если необходимо создать массив экземпляров класса, но в классе нет конструктора по умолчанию? Конечно, можно его объявить,...

Объединение конструкторов по умолчанию и преобразования - C++
Имеется программа, реализующая размещение двухмерного динамического массива с различными фишками, типа шаблонов и т.п. Сутьную часть кода...

Работа конструкторов в классе и дружественная функция - C++
Есть програмка с классом Meal. К ней я так же написал дружественную функцию с вычитанием калорийности объектов от общей калорийности, но...

Сколько может быть конструкторов в классе? - C++
Только один или можно больше?

3
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.05.2014, 05:56 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Кликните здесь для просмотра всего текста
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <iostream>
using namespace std;
 
class CLASS
{
    struct NOTE
    {
        char Family[100];
        char Name[100];
        int Phone;
        int Birthday;
        int Birthmonth;
        int Birthyear;
    };
public:
    CLASS() : people(NULL), number(0)
    {}
    
    CLASS(int n) 
    { 
        number = n;
        people = new NOTE[number];
        create();
    }
 
    CLASS(const CLASS& list)
    {
        number = list.number;
        people = new NOTE[number];
        for (int i = 0; i < number; ++i)
        {
            strcpy(people[i].Family, list.people[i].Family);
            strcpy(people[i].Name, list.people[i].Name);
            people[i].Phone = list.people[i].Phone;
            people[i].Birthday = list.people[i].Birthday;
            people[i].Birthmonth = list.people[i].Birthmonth;
            people[i].Birthyear = list.people[i].Birthyear;
        }
    }
 
    CLASS& operator=(const CLASS& list)
    {
        if (&list == this)
            return *this;
        delete [] people;
        number = list.number;
        people = new NOTE[number];
        for (int i = 0; i < number; ++i)
        {
            strcpy(people[i].Family, list.people[i].Family);
            strcpy(people[i].Name, list.people[i].Name);
            people[i].Phone = list.people[i].Phone;
            people[i].Birthday = list.people[i].Birthday;
            people[i].Birthmonth = list.people[i].Birthmonth;
            people[i].Birthyear = list.people[i].Birthyear;
        }
        
        return *this;
    }
    
    ~CLASS()
    {delete [] people;}
 
    void find(int j);
    
private:
    NOTE* people;
    int number;
    
    void create();
};
 
 
void CLASS::create()
{
    for (int i = 0; i < number; i++)
    {
        cout << "Фамилия №" << i << ":";
        cin >> people[i].Family;
        cout << "Имя:";
        cin >> people[i].Name;
        cout << "Дата рождения:" << endl;
        cout << "день:";
        cin >> people[i].Birthday;
        cout << "номер месяца:";
        cin >> people[i].Birthmonth;
        cout << "год:";
        cin >> people[i].Birthyear;
        cout << "Телефон:";
        cin >> people[i].Phone;
        cout << endl; cout << endl;
    }
}
 
void CLASS::find(int j)
{
    int m = 0;
 
    for (int i = 0; i < number; i++)
    {
        if (people[i].Birthmonth == j)
        {
            cout << "Фамилия №" << i << ":";
            cout << people[i].Family; cout << endl;
            cout << "Имя:";
            cout << people[i].Name; cout << endl;
            cout << "Дата рождения:" << endl;
            cout << "день:";
            cout << people[i].Birthday; cout << endl;
            cout << "номер месяца:";
            cout << people[i].Birthmonth; cout << endl;
            cout << "год:";
            cout << people[i].Birthyear; cout << endl;
            cout << "Телефон:";
            cout << people[i].Phone; cout << endl;
            cout << endl; cout << endl;
            m++;
        }
    }
 
    if (m == 0)
        cout << "Людей с таким месяцем рождения в списке NOTE нет!";
}
 
int main()
{
    setlocale(LC_ALL, "RUS");
 
    cout << "Введите количество записей в списке: ";
    int n;
    cin >> n;
 
    CLASS list(n);
 
    cout << "Введите номер месяца (1..12):";
    int j;
    cin >> j;
    
    list.find(j);
 
    system("pause");
    return 0;
}
0
rura
0 / 0 / 0
Регистрация: 08.01.2014
Сообщений: 153
22.05.2014, 01:28  [ТС] #3
Спасибо. А что значит:
C++
1
2
3
public:
    CLASS() : people(NULL), number(0)
    {}
?
Это конструктор без параметра. Но как понять это его "объявление"?
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.05.2014, 01:31 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от rura Посмотреть сообщение
А что значит:
...
Цитата Сообщение от rura Посмотреть сообщение
создать не менее двух конструкторов, в том числе - по умолчанию
1
22.05.2014, 01:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2014, 01:31
Привет! Вот еще темы с ответами:

Выразить событие, состоящее в том, что при трех выбрасываниях монеты выпадет не менее двух гербов - Теория вероятностей
Прошу помощи в решении задачи: Пусть событие Gj - выпадение герба, а событие Rj - выпадение решки при одном (j-ом) подбрасывании монеты. ...

создать таблицу базы данных в Accesse.Определить связи между табл.один ко многим.Создать форму.Создать 3 запроса и не менее двух отчётов. - MS Access
Исходные данные:ЖЭК:ФИО слесаря,адрес слесаря, перечень выполняемых работ,перечень обслуживаемых улиц,номер дома,в котором организован...

Создать класс Tochka. Реализовать в классе конструктор по умолчанию (без параметров) и с параметрами, ряд методов для работы с точками плоскости - C#
(Создать класс Tochka. Реализовать в классе конструктор по умолчанию (без параметров) и с параметрами, ряд методов для работы с точками...

Создать класс "Двухмерная точка". Реализовать в классе конструктор по умолчанию - C#
Помогите с решением;) Создать класс «Двухмерная точка». Реализовать в классе конструктор по умолчанию (без параметров) и с параметрами,...


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

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

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