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

Не хватает одного конструктора копий - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Преимущества указателя? http://www.cyberforum.ru/cpp-beginners/thread766685.html
Какая разница между? MyObject * object = new MyObject; // и MyObject object; Какие преимущества дает использование указателя на объект с последующим выделением памяти под него по сравнению с...
C++ оздать класс "измерения" с открытыми данными высота и ширина Создать класс "измерения" с открытыми данными высота и ширина. С помощью наследования создать четыре класса: 1. прямоугольник - для расчёта площади прямоугольника 2. прямоугольный треугольник -... http://www.cyberforum.ru/cpp-beginners/thread766650.html
Определить класс "Модель" C++
Детали изделия в качестве объектов Определить класс Модель Данные: номер изделия, номер детали, стоимость детали Методы: 1. конструктор 2. деструктор 3. Установка данных Если номер модели...
C++ создать программу с использованием класса
Написать программу, в которой используется класс myclass для задания значений "а" для объектов "ob1" и "ob2" и вывода на экран этих значений для каждого объекта.
C++ С использованием структуры написать программу http://www.cyberforum.ru/cpp-beginners/thread766647.html
С использованием структуры написать программу, которая: 1. запрашивает у пользователя кол-во видов техники 2. просит ввести название каждого выбранного вида техники 3. просит ввести кол-во...
C++ Почему операторы инкремента действуют по разному для стандартных и нестандартных типов? class my { int i; public: my(int in) :i(in) {} operator int () { return i; } int operator=(int in) { i=in; return i; } подробнее

Показать сообщение отдельно
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
20.01.2013, 01:10
В какой момент вы ожидаете еще один вызов конструктора копирования?
C++
1
c = b = a
можно переписать как
C++
1
c.operator=(b.operator=(a))
и тогда становится ясно, в каких местах вызывается конструктор копирования.
C++
1
2
3
b.operator=(a)  // раз
c.operator=(...) // с результатом от предыдущей операции два
// возврат предыдущей операции три, (который компилятор мог бы и оптимизировать)

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