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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Функция для удаления слова из строки http://www.cyberforum.ru/cpp-beginners/thread661777.html
Доброго времени суток, господа! Столкнулся с проблемой написания функции для удаления слова из строки. До этого приходилось удалять лишь лишние пробелы, делал это следующим образом for(i=0;i<strlen(str);i++) if((str==' ')&&(str==' ')){ delchar(str,i+1); i-- ; } , где delchar
C++ Написать обработчик для класса Vector, который будет ловить следующие ошибки: Дано задание: Написать обработчик для класса Vector, который будет ловить следующие ошибки: 1. невозможность выделения памяти, причем выводилась информация именно в том методе, в котором не удалось выделить память; 2. выход за рамки границы вектора, причем, выводилась информация именно в том методе, в котором делались попытки выхода за рамки массива; 3. неверный размер массива. ... http://www.cyberforum.ru/cpp-beginners/thread661776.html
Двумерный массив. Найти наименьший элемент матрицы. Напечатать его индексы C++
Найти наименьший элемент матрицы. Напечатать его индексы. Добавлено через 40 секунд помогите пожалуйста
Классы. Объекты. Методы C++
Доброго времени суток! Вот задачка. Я пока начинающий в этом деле, так что не очень понятно... Создать класс "дата". Данные класса должны быть представлены тремя полями: числом, месяцем и годом XXI века. Класс должен содержать конструктор по умолчанию, конструктор, инициализирующий поля класса заданными значениями. Обязательными яв-ся методы, возвращающие значения полей, изменяющие эти...
C++ Поменять местами элементы матрицы http://www.cyberforum.ru/cpp-beginners/thread661759.html
Работа с квадратными массивами В задаче рассматривается двумерный массив с одинаковым количеством строк и столбцов; такой массив называют квадратным. Задача: В квадратном массиве из n строк, где n – нечетное число, все элементы различны. Наибольший элемент среди стоящих на главной и побочной диагоналях поменять местами с элементом, стоящим на пересечении этих диагоналей.
C++ Прошу сказать, правильно ли я решил, и , если не правильно, то указать ошибки Есть задачка \sum_{i=0}^{8}\sum_{j=0}^{10}\sum_{k=0}^{3}\left(\frac{i+3k-4j}{2+3i+4j} \right) и есть мой код (сразу говорю, я очень плох в программировании:) )- #include<iostream> using namespace std; void main( ) { float sum=0 ; подробнее

Показать сообщение отдельно
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
02.10.2012, 11:03     Что такое конструктор копий?
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
Если будет два значения, а и б, я правильно копирующий конструктор описал?
Правильно.

Цитата Сообщение от AnreyKazakov Посмотреть сообщение
Да и вопрос, он нужен вообще? Просто в книжке мало описывается сам конструктор, но зато оч много о том, что по умолчанию ВСЕГДА, он есть....
Если копирующий конструктор явно не объявить в классе, то компилятор сгенерирует его автоматически. Как уже писали выше, не всегда компилятор сделает то, что нужно нам, поэтому в этих случаях копирующий конструктор объявляют явно. Однако это не единственный случай, когда бывает нужно явно объявить копирующий конструктор. Мы, например, можем захотеть запретить копирование объектов данного класса. Тогда мы объявляем копирующий конструктор в закрытой области:
C++
1
2
3
4
5
class T
{
private:
   T(const T&) {}
};
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
И еще правильна ли будет такая запись? Если я хочу в обе переменные нового объекта класса записать значения а.
Ну если вам оно так надо по задаче, то можно и так сделать. Я, правда, не могу так сходу придумать, когда такое бывает нужно. Можно инициализировать поля копии какими-то начальными значениями, а не значениями этих же полей исходного объекта (например, если в классе есть какие-то счётчики или что-то подобное).

Добавлено через 2 минуты
Цитата Сообщение от Sher_vud Посмотреть сообщение
и становится теперь совсем не понятно, запускается ли мой конструктор копирования или конструктор копирования по умолчанию
Как уже писал, если в классе объявлен копирующий конструктор, то копирующего конструктора по умолчанию в нём уже нет. Короче, в классе может быть только один копирующий конструктор. В вашем коде копирующий конструктор в принципе не вызывается.
 
Текущее время: 11:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru