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

Конструктор копировщик - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание вложенной папки (Directory) http://www.cyberforum.ru/cpp-beginners/thread342790.html
Добрый день, появилась необходимость создать вложенную папку в среде windows XP нашел тока #include <windows.h> CreateDirectory((LPCTSTR)"c:\\new",NULL); // но данный код не работает почему-то,...
C++ Разложение числа на слагаемые Разложение числа на слагаемые - используется во многих задачах (как мне кажется - это тривиальная задача). И мне стало интересно: какой самый быстрый алгоритм разложения числа на слагаемые вы... http://www.cyberforum.ru/cpp-beginners/thread342773.html
C++ Расчет краски на лабиринт
Условие задачи тут #include <iostream> using namespace std; void paint(int i, int j) { if (a=='.') { a='$'; paint(i+1,j); paint(i-1,j); paint(i,j+1);
C++ Создание нескольких стеков
//--------------------------------------------------------------------------- #pragma hdrstop #include <tchar.h> #include <stdlib.h> #include <iostream.h> #include <dos.h>...
C++ Сохранение матриц больших размеров в типизированный файл http://www.cyberforum.ru/cpp-beginners/thread342662.html
Проблема: есть большой двумерный массив (double). Пытаюсь сохранить его в типизированный файл (а затем считать в другой массив). В файл сохраняется только некоторая часть (до 58 элемента, в частном...
C++ два ++ Что означает "++" что ето за операция в С++Builder очень надо узнать Напишите кто нибудь. подробнее

Показать сообщение отдельно
GREGOR_812
25 / 25 / 3
Регистрация: 23.04.2014
Сообщений: 128
04.03.2015, 15:43
rvma, мысль правильная. Есть "правило трёх", которое гласит, что если переопределён конструктор копирования, оператор присваивания или деструктор, то нужно переопределять и остальные два.
Цитата Сообщение от Ilot Посмотреть сообщение
Ошибка утечки памяти связана с отсутствием опреатора присваения.
Не совсем точно сформулирована фраза. Здесь имелось ввиду как раз то, что оператор присваивания не определён. Поэтому при вызове конструкции типа
C++
1
2
3
Obj a(/* some params */);
Obj b(/* some params */);
b = a;
вызовется оператор присваивания по умолчанию, который тупо скопирует все поля, в том числе и указатели, объекта а. Таким образом, мы получим не только двойное освобождение памяти при уничтожении объектов, но и утечку, т.к. указатель объекта b до присваивания указывал на какую-то выделенную память, а в процессе копирования он был утерян.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru