Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ MessageBox API https://www.cyberforum.ru/ cpp-beginners/ thread629083.html
MessageBox API: не получаеться обработать выбор. Мой код: int SELECT = MessageBox(hwnd, _T("Вы действительно хотите завершить работу программы? ВНИМАНИЕ! В случае завершения работы программы,...
Перегрузка потокового оператора (<<). Выдает адрес вместо значения C++
Сабж. Все компелится нормально. Если делать << void то работает ок см комменты если делать класса std::ostream& то возвращает 16чное значение. Заранее спасибо #ifndef Point_HPP // anti...
C++ Реализовать шаблонный класс
В общем требуется реализовать шаблонный класс FixedArray<T,N> FixedArray - абстракция вокруг T Использование выглядит как то так: FixedArray<std::vector, 8> myArr1 = {1, 2, 3, 4};...
C++ stdlib.h - quicksort Идея такова: отсортировать массив A очень быстрым методом Хоара. Пробовал в stdlib.h делать QuickSort - ничего не получилось. Все значения элементов - до 263-1. Т.е. влазят в тип long. Помогите... https://www.cyberforum.ru/ cpp-beginners/ thread629057.html
C++ KeyDown обрабатывает только символы https://www.cyberforum.ru/ cpp-beginners/ thread629012.html
Всем привет. Собственно сам вопрос, когда я вызываю функцию (пишу на WinApI, но вопрос из основ c++) Она реагирует только на буквы, цифры, а мне нужно ещё VK_LEFT, VK_RIGHT. Но почему то эта функция...
C++ Написать dll для дальнейшего использования в программах на других языках
как правильно написать dll чтоб ей можно было пользоваться программам на других языках, например, на delphi
C++ Ошибка в Dev-C++
Скачал книгу "Как программировать на С++" Харви и Пола Дейтелов. Дочитал до первой программы и попробовал её переписать в Dev-C++ //first programm c++ #include <iostream.h> main () { cout...
C++ Подключить dll Здравствуйте. Есть dll, в ней несколько функций, необходимо добавить еще одну, чтобы выводила окно с приветствием. И затем написать win - проект, который будет использовать эту функцию. В нете... https://www.cyberforum.ru/ cpp-beginners/ thread628997.html
C++ Компоновка всей программы в один файл https://www.cyberforum.ru/ cpp-beginners/ thread628937.html
Можно ли сделать так, чтоб при построение программы она, включая все внешние картинки, звуковые файлы, редистрюбитивы VC и пр компоновались в один файл? Тоесть, чтоб я мог на любом компьютере...
C++ Как можно сделать программу более компактнее решил использовать новый способ в программе. так вот как можно этот код сделать болие компактнее: #include <iostream> #include <string> using namespace std; int main() { setlocale(LC_ALL,... https://www.cyberforum.ru/ cpp-beginners/ thread628921.html
5470 / 4865 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.07.2012, 12:30 0

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

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

Ответ

Тут о другом разговор. Если конструктор принимает константную ссылку на объект, это не значит, что сами данные этого объекта константны. Это только значит, что сам конструктор через эту ссылку не может менять объект. Я написал, что в вашем коде достаточно неявного констуктора копирования, который выполняет поверхностное копирование, т.е. просто копирует значения переменных одного объекта в другой. Проблема возникает с указателями, инициализированными оператором new. При поверхностном копировании, создаются копии указателей (адресов, которые они содержат), а не того, на что они указывают. Поэтому получается несколько объектов, с указателями, которые указывают на одну и ту же область памяти. Получаются, как бы, общие данные. Один объект, через указатели, меняет содержимое этой памяти, а другие объекты, и не знают об этом. При удалении одного объекта эта память освобождается. При удалении других, котрые содержат указатели на эту же память, делается попытка освободить уже свободную память, что приводит к ошибке. Поэтому, в этих случаях, задаётся явный конструктор копирования, который выполняет глубокое копирование, т.е. он копирует не указатели, а то, на что они указывают. После этого, у каждого объекта, указатели будут указывать на свою область памяти, со своими данными.

Вернуться к обсуждению:
Компилятор просит указать const в конструкторе
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.07.2012, 12:30
Готовые ответы и решения:

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

Зачем в конструкторе копий писать const?
Добрый день. Возник вопрос, на счёт конструктора копий. Зачем писать модификатор const, когда...

Запрос при выполнении в вба просит ввести данные, а в конструкторе работает нормально
Столкнулся со следующей проблемой. В вба запрос выдает это: Но если делать через конструктор...

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

33
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.