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

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

Войти
Регистрация
Восстановить пароль
 
Nike1995
2 / 2 / 0
Регистрация: 14.10.2012
Сообщений: 288
#1

Пример конструктора копирования не понятен - C++

04.04.2016, 03:10. Просмотров 180. Ответов 5
Метки нет (Все метки)

Задание: есть класс, одним из пунктом является написание класса копирования.
Есть такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Phone::Phone(Phone *a){
    this->set_firstName(a->get_firstName());
    this->set_lastName(a->get_lastName());
    this->set_fatherName(a->get_fatherName());
    this->set_adress(a->get_adress());
    this->set_number(a->get_number());
    this->inCalls = a->get_inCalls();
    this->outCalls = a->get_outCalls();
}
Phone *Phone::copy(Phone *a){
    set_firstName(a->get_firstName());
    set_lastName(a->get_lastName());
    set_fatherName(a->get_fatherName());
    set_adress(a->get_adress());
    set_number(a->get_number());
 
    this->inCalls = a->inCalls;
    this->outCalls = a->get_outCalls();
 
    return this;
}
Предположительно он и есть. Но что в этом коде делается? В учебниках пишут, что класс копирования объявляется так
C++
1
Phone(const Phone &a);
А что тут происходит е очень понимаю. На с++ пишу два дня, нужна помощь))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2016, 03:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Пример конструктора копирования не понятен (C++):

Не понятен параметр конструктора - C++
Здравствуйте, помогите пожалуйста расшифровать вот это (это конструктор) - IntArray (const IntArray &rhs); Мы тут передаем в параметры...

В чём отличия конструктора копирования и конструктора перемещения? Где и как их нужно использовать? - C++
Помогите разобраться в копирующем и перемещающем конструкторах. В чём их существенное отличие и какой плюс от использования перемещающего...

Касательно конструктора копирования - C++
Вопрос следующий. У меня есть класс "Точки" есть класс "группы" и есть класс "возможные группы". 3 класса. в классе "группы" есть...

Ошибка в перегрузке конструктора копирования - C++
// strimem.cpp // Класс String с экономией памяти // Перегружаемая операция присваивания и конструктор // копирования #include...

По поводу ссылок и конструктора копирования - C++
Никак не пойму. При создании объекта и передачи конструктору в качестве параметра объекта другого класса, отладчик показывает что на...

Не понятна работа конструктора копирования - C++
Добрый день! Читаю Шилдта базовый курс. Дошел до конструктора копии.В книжных примерах вроде все понятно было. Перешел на перегрузку...

5
zer0mail
2368 / 1998 / 199
Регистрация: 03.07.2012
Сообщений: 7,186
Записей в блоге: 1
04.04.2016, 05:53 #2
В коде нет констуктора копирования
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3945 / 2169 / 553
Регистрация: 18.10.2014
Сообщений: 3,783
04.04.2016, 06:38 #3
Цитата Сообщение от Nike1995 Посмотреть сообщение
C++
1
Phone::Phone(Phone *a)
Это конструктор конверсии. Конструктора копирования в приведенном коде нет и в помине.
0
Serg_o_Grey
76 / 76 / 27
Регистрация: 29.03.2016
Сообщений: 348
04.04.2016, 07:28 #4
TheCalligrapher,
Это конструктор конверсии. Конструктора копирования в приведенном коде нет и в помине.
А как по вашему должен выглядеть конструктор копирования?
Как по моему, так это он и есть.
Здесь создается новый элемент списка и в него копируются значения из элемента списка a
Что это если не копирование???
Да, и конверсия это неотъемлемый этап копирования!
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3945 / 2169 / 553
Регистрация: 18.10.2014
Сообщений: 3,783
04.04.2016, 07:50 #5
Цитата Сообщение от Serg_o_Grey Посмотреть сообщение
А как по вашему должен выглядеть конструктор копирования?
Конструктор копирования - четко определенный термин в языке С++, играющий особую роль в целом ряде ситуаций. Конструктором копирования класса C называется конструктор, у которого первый параметр имеет тип C &, const C &, volatile C & или const volatile C & и либо больше нет параметров вообще, либо все остальные параметры имеют аргументы по умолчанию.

То, что в каком-то конструкторе что-то куда-то копируется, еще не делает этот конструктор конструктором копирования.

Цитата Сообщение от Serg_o_Grey Посмотреть сообщение
Да, и конверсия это неотъемлемый этап копирования!
Каждый конструктор копирования формально является и конструктором конверсии. Но не каждый конструктор конверсии является конструктором копирования. Этот - не является.
3
Serg_o_Grey
76 / 76 / 27
Регистрация: 29.03.2016
Сообщений: 348
04.04.2016, 07:54 #6
TheCalligrapher, ясно. Спасибо
0
04.04.2016, 07:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2016, 07:54
Привет! Вот еще темы с ответами:

Грамотное использование конструктора копирования - C++
Всем добрый вечер. Есть класс list(двухсвязный). Задача гласит: Сгенерировать некоторую последовательность чисел, вывести на экран, и затем...

Реализация конструктора копирования и перегрузки = - C++
#include <iostream> #include <cstring> using namespace std; class Cow{ private: char name; char *...

Неявный вызов конструктора копирования - C++
Здравствуйте, как можно неявно вызвать конструктор копирования 3 способами? Я только 1 найти смог. #include <iostream> class...

Подскажите реализацию конструктора копирования - C++
Подскажите пожалуйста как реализовать конструктор копирования. #include <iostream> #include <stdio.h> #include <math.h> using...


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

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

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