Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
AnreyKazakov
Заблокирован
#1

Что такое конструктор копий? - C++

02.10.2012, 00:13. Просмотров 2275. Ответов 22
Метки нет (Все метки)

Объясните, пожалуйста, на максимально простом языке, чем отличается конструктор от конструктора копий?
Может это и одно и то же, хотя вряд ли, в книжке в разных разделах инфа выложена...
под конструктором я понимаю что-то вроде:
C++
1
2
3
4
class as{
as():a(155){}
int a;
};
Если класс объявлен, а переменная а не инициализирована, то значение а 155.
А что такое конструктор копий? Злость берет, что нифига не понимаю.... Единственное порадовало: "Зачастую самой трудной задачей при определении конструктора копий является собственно осознание того,что он необходим"
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
02.10.2012, 23:23     Что такое конструктор копий? #21
Sher_vud, Потому что

C++
1
String s = "abcd";
эквивалентно на самом деле
C++
1
String s(String("abcd"));
, компилятор может не вызывать конструктор копирования, однако проверить то, что существует подходящий обязан. В данном примере проблема в том, что конструирование идет от временного объекта, который не может быть связан с ссылкой. Почитайте http://stackoverflow.com/questions/1...t-initializati
Sher_vud
4 / 4 / 1
Регистрация: 25.09.2012
Сообщений: 42
03.10.2012, 01:06     Что такое конструктор копий? #22
Цитата Сообщение от ForEveR Посмотреть сообщение
В данном примере проблема в том, что конструирование идет от временного объекта
C++
1
String s = "abcd";
в статье на которую Вы дали ссылку приводится пример
B(A const&)
operator B(A&);
я так понял "const" должен быть проставлен для повышения приоритета, дабы исключить сомнения у компилятора, что же запускать.
получается проблема в том,что компилятор считает ситуацию
B(A&)
operator B(A&);
неоднозначной и соответственно выдает ошибку, я правильно понимаю?
у меня он пишет вот что:
no matching function for call to `String::String(String)'
candidates are: String::String(String&)
String::String(char*)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2012, 07:17     Что такое конструктор копий?
Еще ссылки по теме:

Конструктор копий C++
Что такое конструктор? C++
Почему не вызывается ни конструктор копий, ни функция перегруженного оператора присвоения C++
Что такое конструктор по умолчанию? Как инициализируются данные-члены объекта? C++
C++ Конструктор копий

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

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
03.10.2012, 07:17     Что такое конструктор копий? #23
Sher_vud, У вас проблема исключительно в том, что временный объект не может быть связан с неконстантной ссылкой.
Yandex
Объявления
03.10.2012, 07:17     Что такое конструктор копий?
Ответ Создать тему
Опции темы

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