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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
AnreyKazakov
Заблокирован
02.10.2012, 00:13     Что такое конструктор копий? #1
Объясните, пожалуйста, на максимально простом языке, чем отличается конструктор от конструктора копий?
Может это и одно и то же, хотя вряд ли, в книжке в разных разделах инфа выложена...
под конструктором я понимаю что-то вроде:
C++
1
2
3
4
class as{
as():a(155){}
int a;
};
Если класс объявлен, а переменная а не инициализирована, то значение а 155.
А что такое конструктор копий? Злость берет, что нифига не понимаю.... Единственное порадовало: "Зачастую самой трудной задачей при определении конструктора копий является собственно осознание того,что он необходим"
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2012, 00:13     Что такое конструктор копий?
Посмотрите здесь:

что такое конструктор? C++
C++ Конструктор копий по умолчанию.
C++ [C++] классы конструктор копий
Конструктор копий. Оператор присваивания C++
C++ Конструктор копий
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 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++

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

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

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