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

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

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

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

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

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

Здравствуйте!
В учебнике написано, что в данной программе перегружается конструктор копирования и оператор присваивания.
Код:
#include<iostream>
#include<conio.h>
using namespace std;
class alpha
{
private:
	int data;
public:
	alpha()
	{}
	alpha(int d)
	{data=d;}
	alpha(alpha& a)
	{
		data=a.data;
		cout<<"\nЗапущен конструктор копирования";
	}
	void display()
	{
		cout<<data;
	}
	void operator = (alpha& a)
	{
		data=a.data;
		cout<<"\nЗапущен оператор присваивания";
	}
};
int main()
{
	setlocale(LC_ALL,"rus");
	alpha a1(37);
	alpha a2;
	a2=a1;
	cout<<"\na2="; 
	a2.display();
	alpha a3(a1);
	cout<<"\na3="; 
	a3.display();
	cout<<endl;
	getch();
	return 0;
}
Правильно ли я понял, что перегрузка конструктора копирования выражается в данном случае в добавлении надписи "Запущен конструктор копирования"?
Если нет, то подскажите пожалуйста в чем выражается перегрузка в данном случае, и как выглядит в данном случае не перегруженный конструктор копирования.
KAMLS вне форума Ответить с цитированием
Старый 04.07.2017, 08:01   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от KAMLS Посмотреть сообщение
в чем выражается перегрузка в данном случае
В том, что конструктор копирования объявлен явно.
Если его нет, компилятор сгенерирует его сам и будет копировать каждую переменную.
waleri вне форума Ответить с цитированием
Старый 04.07.2017, 09:21   #3
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Иными словами, если даже я явно пропишу стандартную формулу конструктора копирования которую использует компилятор по умолчанию, это уже будет считаться перегрузкой?
KAMLS вне форума Ответить с цитированием
Старый 04.07.2017, 09:36   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Перегрузка (overloading) это когда есть функции (ну или конструкторы) с одним именем и разными параметрами.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.07.2017, 09:55   #5
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Да, но пользователь с ником waleri, говорит что суть именно в явном объявлении...
KAMLS вне форума Ответить с цитированием
Старый 04.07.2017, 10:09   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Суть чего? Слово перегрузка (overloading) означает не то, что вы думали. Поведение конструктора тут не причем.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.07.2017, 10:42   #7
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Хорошо, если можете, ответьте пожалуйста на мои вопросы в первом посте, ведь именно ради этих вопросов я и создал тему. Получается, ответа на них я пока не получил))
KAMLS вне форума Ответить с цитированием
Старый 04.07.2017, 10:52   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Дык вопрос некорректный, непонятно что спрашивается. Перегрузка это не про код внутри конструкторов.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.07.2017, 11:09   #9
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Вопрос такой:
В представленном коде конструктор копирования перегружен?
KAMLS вне форума Ответить с цитированием
Старый 04.07.2017, 11:34   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так я ж говорю
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Перегрузка (overloading) это когда есть функции (ну или конструкторы) с одним именем и разными параметрами.
В том коде видно целых 3 конструктора, так что очевидно слово перегрузка применимо к этой ситуации.

Спрашивать "перегружен ли конструктор копирования" (то есть тот, что принимает ссылку на объект этого класса) по этому определению наверно не очень корректно.

Возможно автор хотели сказать не то, что вы (или переводчик) подумали, или определение слова "перегрузка" у него другое.

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

Последний раз редактировалось Alex11223; 04.07.2017 в 11:37.
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