0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 7
1

Конструктор копирования

22.09.2019, 16:42. Показов 366. Ответов 3
Метки нет (Все метки)

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
#include <iostream>
#include <cstring>
#include <cstdlib>
 
#define SIZE 30
 
using namespace std;
 
class Spivak {
    char Name[SIZE], Surname[SIZE], Date_birth[SIZE], Nazva_song[SIZE];
    char *Prize;
    int Year_Song, Size;
public:
    Spivak();
    Spivak(char *N, char *S, char *D, char *Nazva, int Y, int Si);
    Spivak(const Spivak &obj);
    ~Spivak();
    void show_info();
    void enter_pole();
    void show_pole();
};
 
Spivak::~Spivak() {
    cout << "Using destructor" << endl;
    delete [] Prize;
}
 
Spivak::Spivak(const Spivak &obj) {
    cout << "Using copy constructor" << endl;
    Size = obj.Size;
    Prize = new char[strlen(obj.Prize)+1];
    if(!Prize) { cout << "Allocation error!!" << endl; exit(1); }
    strcpy(Name, obj.Name);
    strcpy(Surname, obj.Surname);
    strcpy(Date_birth, obj.Date_birth);
    strcpy(Nazva_song, obj.Nazva_song);
    strcpy(Prize, obj.Prize);
    Year_Song = obj.Year_Song;
}
 
void Spivak::show_pole() {
    cout << "The most famous prize: " << Prize << endl;
}
 
void Spivak::enter_pole() {
    char Pole[Size];
    cin >> Pole;
    strcpy(Prize, Pole);
    cout << endl;
}
 
Spivak::Spivak() {
    cout << "Using default constructor" << endl;
    Name[SIZE] = {}; 
    Surname[SIZE] = {}; 
    Date_birth[SIZE] = {}; 
    Nazva_song[SIZE] = {};  
    Year_Song = 0;
    Size = 0;
}
    
Spivak::Spivak(char *N, char *S, char *D, char *Nazva, int Y, int Si) {
    cout << "Using inizialization constructor" << endl;
    strcpy(Name,N);
    strcpy(Surname,S);
    strcpy(Date_birth,D);
    strcpy(Nazva_song,Nazva);
    Year_Song = Y;
    Size = Si;
    Prize = new char[Size];
    if(!Prize) { cout << "Allocation error!!" << endl; exit(1); }
}
 
void Spivak::show_info() {
    cout << "╔═════════════════════════════════════════════════════════╗" << endl;
    cout << "║ The singers Name:  "<< Name << "                                "<<"║" << endl;
    cout << "║ The singers Surname: " << Surname <<"                              "<<"║" << endl;
    cout << "║ The singers Date of birth: " << Date_birth <<"                   "<<"║" << endl;
    cout << "║ The singers most famous song: " << Nazva_song <<"                     "<<"║" << endl;
    cout << "║ The year of creation of song: " << Year_Song <<"                      "<<"║" << endl;
    cout << "╚═════════════════════════════════════════════════════════╝" << endl;
}
    
int main() {
    char Name_m[SIZE], Surname_m[SIZE], Date_birth_m[SIZE], Nazva_song_m[SIZE];
    int Year, size;
    cout <<"Enter the name of singer: ";
    cin >> Name_m;
    cout << "Enter the surname of singer: ";
    cin >> Surname_m;
    cout << "Enter the date of birth of singer: ";
    cin >> Date_birth_m;
    cout << "Enter the most famous song of singer: ";
    cin >> Nazva_song_m;
    cout << "Enter the year creation of song: ";
    cin >> Year;
    cout << "Enter size of dynamic mass: ";
    cin >> size;
    Spivak obj(Name_m, Surname_m, Date_birth_m, Nazva_song_m, Year, size);
    cout << "Enter the most famous singer`s prize: ";
    obj.enter_pole();
    obj.show_info();
    obj.show_pole();
    Spivak obj1;
    obj1 = obj;
    obj1.show_info();
    obj1.show_pole();
    return 0;
}
Помогите найти ошибку, при компиляции Aborted(core dumped)
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2019, 16:42
Ответы с готовыми решениями:

Не могу сделать чтобы класс содержал основной конструктор и конструктор копирования
Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных...

Конструктор класса, конструктор копирования запускается не тот который нужен
Есть такой конструктор: Neuron::Neuron(int iType_activation_funk) { this-&gt;iType_act =...

Не могу правильно сделать конструктор и конструктор копирования и принадлежность точки с заданными координатами треугольнику
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; #include...

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

3
99 / 80 / 76
Регистрация: 11.05.2015
Сообщений: 192
22.09.2019, 16:57 2
В методе enter_pole переменная Size не является константой, из-за чего возникает ошибка при объявлении массива Pole.
C++
1
2
3
4
5
6
7
void Spivak::enter_pole() {
    // char Pole[Size];
    // cin >> Pole;
    // strcpy(Prize, Pole);
    // cout << endl;
    cin >> Prize;
}
0
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 7
22.09.2019, 17:18  [ТС] 3
Не помогло, меня смущает что не появляется сообщение о том что сработал конструктор копирования. Я подозреваю что он не правильно работает.
0
бах-бах и в продакшен!
3039 / 1643 / 573
Регистрация: 23.09.2014
Сообщений: 5,129
Записей в блоге: 4
22.09.2019, 17:30 4
IlliaDulebov,


Spivak obj1;
obj1 = obj;
C++
104
105
/// Вот так будет работать ваш конструктор копирования:
Spivak obj1(obj);
C++
104
105
/// ...или так:
Spivak obj1 = obj;
для obj1 = obj; вам надо перегрузить operator=

исправьте и у вас появится "Using copy constructor"
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2019, 17:30

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

Конструктор копирования
Приветствую! Есть следующий пример: #include &lt;iostream&gt; using namespace std; class Alpha{...

Конструктор копирования
Здравствуйте. Есть класс. Не могу понять как правильно написать и вызвать конструктор копирования. ...

Конструктор копирования
есть класс, в нем есть указать на участок памяти, как написать для этого класс конструктор...


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

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

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