Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2017, 14:51   #11
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Цель вопроса узнать, как выглядит код не перегруженного конструктора копирования, и как выглядит код перегруженного конструктора копирования.
В представленном примере есть несколько конструкторов, да. Но ведь Вы прекрасно понимаете, что там далеко не все конструкторы являются конструкторами копирования))). Зачем же наводить тень на плетень?)))
Вопрос конкретный, в самом первом посте. Представлю его несколько подкорректированную версию:
"Правильно ли я понял, что перегрузка конструктора копирования выражается в данном случае в добавлении надписи "Запущен конструктор копирования"?
Если нет, то подскажите пожалуйста в чем выражается перегрузка конструктора копирования в данном случае, и как выглядит в данном случае не перегруженный конструктор копирования?"
KAMLS вне форума Ответить с цитированием
Старый 04.07.2017, 15:33   #12
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Там перегрузка конструктора. И реализация своего конструктора копирования вместо сгенерированного по умолчанию.
Что такое "перегрузка конструктора копирования" и что вы от него хотите непонятно, конструктор копирования это тоже просто конструктор.

Перегрузка функций (ну конструктор это ж тоже функция) это термин означающий то, что я описал.

https://ru.wikipedia.org/wiki/%D0%9F...86%D0%B8%D0%B9

Еще есть перегрузка операторов, но по сути это тоже просто разные параметры функции с одним "именем".
Например плюс(число, число) и плюс(строка, строка).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 04.07.2017 в 15:43.
Alex11223 вне форума Ответить с цитированием
Старый 04.07.2017, 16:49   #13
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Дело вот в чем. Я прикрепил фото учебника где говорится, что в данной программе конструктор копирования перегружен. Я хочу выяснить:
"В ЧЕМ ЗАКЛЮЧАЕТСЯ ЭФФЕКТ ПЕРЕГРУЗКИ".
Либо в том что в тело конструктора добавлен текст "Запущен конструктор копирования",
либо в том что вообще конструктор копирования прописан явно.
В чем соль перегрузки в данном случае?
Я полагаю, что понятней вопрос задать невозможно.
В призме этого поста можно рассмотреть все предыдущие.
Изображения
Тип файла: jpg 20170704_194007.jpg (87.0 Кб, 128 просмотров)
KAMLS вне форума Ответить с цитированием
Старый 04.07.2017, 17:31   #14
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так ответили ж уже.

В том коде просто добавили свой конструктор копирования (и оператор присваивания).
Цитата:
Сообщение от waleri Посмотреть сообщение
Если его нет, компилятор сгенерирует его сам и будет копировать каждую переменную.
Если есть свой, то соответственно не сгенерирует.

А про перегрузку может просто немного криво написано в книге. Не стоит так сильно зависать на этом одном предложении.

Перегрузкой обычно называют ситуацию когда есть несколько функций с одинаковым именем, но отличающиеся сигнатурой (параметры).

Вот такая ситуация тут и есть.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 04.07.2017 в 17:34.
Alex11223 вне форума Ответить с цитированием
Старый 04.07.2017, 18:05   #15
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Про перегрузку я уже нормально изучил. Понимаю вроде.
Но абстрагируясь от этого, как Вы сказали, корявого написания, интересуюсь у Вас лично: можете Вы мне написать код перегруженного конструктора копирования (простенький), и код конструктора копирования работающего не явно?
KAMLS вне форума Ответить с цитированием
Старый 04.07.2017, 18:19   #16
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от KAMLS Посмотреть сообщение
код конструктора копирования работающего не явно
код конструктора копирования работающего не явно писать не надо, компилятор сгенерирует сам. Удалите ваш конструктор копирования и будет вам неявный конструктор.
waleri на форуме Ответить с цитированием
Старый 04.07.2017, 18:43   #17
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Ну вообще то я прошу другого форумчанина написать ответ на мой вопрос. И мой вопрос остаётся в силе.
Но Вам я скажу так, меня именно и интересует код который создаст сам компилятор.
Код.
KAMLS вне форума Ответить с цитированием
Старый 04.07.2017, 19:31   #18
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так ответили ж уже, копирование всех полей объекта. Как в этом примере и есть.
Ну может есть какие-то нюансы в сложных случаях, надо смотреть стандарт.

Указатели естественно копируются не "глубоко", то есть только сам указатель (указывающий на то же место в памяти).
А вот массивы (int arr[100]) вроде копируются.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 04.07.2017 в 19:35.
Alex11223 вне форума Ответить с цитированием
Старый 04.07.2017, 20:19   #19
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Уважаемый Alex11223.
Просьба следующая.
Можете Вы мне написать по-своему код перегруженного конструктора копирования (простенький), и код конструктора копирования работающего не явно?
(Вы мне подобного не писали, и никто.)
Остальных форумчан своими постами данный вопрос прошу не замыливать.)))))А то я заметил, тут здорово умеют отвечать не отвечая)
KAMLS вне форума Ответить с цитированием
Старый 04.07.2017, 20:25   #20
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вы ж сами и написали в первом сообщении.
Что именно непонятно в
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
копирование всех полей объекта
или
Цитата:
Сообщение от waleri Посмотреть сообщение
будет копировать каждую переменную
?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызовы конструктора копирования rmv240899 Общие вопросы C/C++ 11 11.06.2012 13:07
Вызов конструктора для this в констукторе копирования TrydORgolik Общие вопросы C/C++ 1 03.09.2011 11:54
Перегрузка конструктора формы Frustrator Общие вопросы Delphi 1 22.04.2011 09:05
Конструктор копирования, перегрузка операций xPAL Общие вопросы C/C++ 1 15.10.2010 20:16
Перегрузка конструктора Spice Общие вопросы C/C++ 3 20.07.2009 14:37