Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.07.2012, 12:30

Компилятор просит указать const в конструкторе - C++

27.07.2012, 12:30. Просмотров 2055. Ответов 33
Метки (Все метки)

Тут о другом разговор. Если конструктор принимает константную ссылку на объект, это не значит, что сами данные этого объекта константны. Это только значит, что сам конструктор через эту ссылку не может менять объект. Я написал, что в вашем коде достаточно неявного констуктора копирования, который выполняет поверхностное копирование, т.е. просто копирует значения переменных одного объекта в другой. Проблема возникает с указателями, инициализированными оператором new. При поверхностном копировании, создаются копии указателей (адресов, которые они содержат), а не того, на что они указывают. Поэтому получается несколько объектов, с указателями, которые указывают на одну и ту же область памяти. Получаются, как бы, общие данные. Один объект, через указатели, меняет содержимое этой памяти, а другие объекты, и не знают об этом. При удалении одного объекта эта память освобождается. При удалении других, котрые содержат указатели на эту же память, делается попытка освободить уже свободную память, что приводит к ошибке. Поэтому, в этих случаях, задаётся явный конструктор копирования, который выполняет глубокое копирование, т.е. он копирует не указатели, а то, на что они указывают. После этого, у каждого объекта, указатели будут указывать на свою область памяти, со своими данными.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2012, 12:30
Готовые ответы и решения для C++ Компилятор просит указать const в конструкторе:

Что значит const в конструкторе класса?
Здравствуйте, не понимаю что значит const в конструкторе класса. Встречался с...

Параметр const T & val = T() в конструкторе шаблонного класса
Добрый день! Начал разбираться с шаблонами и наткнулся на такой пример: ...

int const * const foo(const int* param) const - разъясните значение квалификаторов
int const * const foo(const int* param) const ...

Как компилятор обрабатывает член класса static constexpr const char*
Привет! Наткнулся на непонятный момент class Foo { public: static...

Ошибка в конструкторе с параметром. Компилятор не ругается, но при запуске программы возникает ошибка
Я знаю точно, что ошибка в конструкторе с параметром. Компилятор не ругается,...

Строки: почему компилятор пишет , что переменная типа char несовместима с const char?
char pass; int password( int d) { int m; char p; cout << "Введите...

33
Компилятор просит указать const в конструкторе C++   Следующее сообщение темы 
Другие темы раздела
C++ MessageBox API http://www.cyberforum.ru/cpp-beginners/thread629083.html
MessageBox API: не получаеться обработать выбор. Мой код: int SELECT = MessageBox(hwnd, _T("Вы действительно хотите завершить работу программы? ВНИМАНИЕ! В случае завершения работы программы,...
C++ Перегрузка потокового оператора (<<). Выдает адрес вместо значения Сабж. Все компелится нормально. Если делать << void то работает ок см комменты если делать класса std::ostream& то возвращает 16чное значение. Заранее спасибо #ifndef Point_HPP // anti... http://www.cyberforum.ru/cpp-beginners/thread629067.html
C++ Реализовать шаблонный класс
В общем требуется реализовать шаблонный класс FixedArray<T,N> FixedArray - абстракция вокруг T Использование выглядит как то так: FixedArray<std::vector, 8> myArr1 = {1, 2, 3, 4};...
stdlib.h - quicksort C++
Идея такова: отсортировать массив A очень быстрым методом Хоара. Пробовал в stdlib.h делать QuickSort - ничего не получилось. Все значения элементов - до 263-1. Т.е. влазят в тип long. Помогите...
C++ KeyDown обрабатывает только символы http://www.cyberforum.ru/cpp-beginners/thread629012.html
Всем привет. Собственно сам вопрос, когда я вызываю функцию (пишу на WinApI, но вопрос из основ c++) Она реагирует только на буквы, цифры, а мне нужно ещё VK_LEFT, VK_RIGHT. Но почему то эта функция...
C++ Написать dll для дальнейшего использования в программах на других языках как правильно написать dll чтоб ей можно было пользоваться программам на других языках, например, на delphi подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru