|
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
|
|||||||||||
Зачем нужны конструктор и деструктор класса?27.09.2009, 01:13. Показов 3446. Ответов 8
Метки нет (Все метки)
вот задание:
Пользовательский класс Х должен содержать необходимые элементы-данные, которые создаются в динамической области памяти. Конструктор для их создания (операция new) и установки их начальных значений: Х (); деструктор: ~ Х (); friend – функция печати: friend void print(); функция, решающая поставленную задачу: friend Void Run(). Код методов и функций– вне пространства определения класса. вот моя прога:
и ещё компилятор выдаёт ошибку: пишет что переменные res x y z undeclared identifier в строке
0
|
|||||||||||
| 27.09.2009, 01:13 | |
|
Ответы с готовыми решениями:
8
Конструктор и деструктор анонимного класса Конструктор (деструктор) у класса, не имеющего тип Для класса задать конструктор и деструктор |
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|
| 27.09.2009, 01:41 | |
|
Ошибка "undeclared identifier" значит, что компилятор, по-русски говоря, не понимает, что это за переменные res, x, y да ещё и z
Неопознанные идентификаторы- вот как это переводится. А оно на самом деле так. Ибо хоть ты их объявил в классе, но они по умолчанию видимы ТОЛЬКО в пределах класса или при помощи специальных функций-членов (или методов) этого класса или так называемых дружественных функций (типа они дружат с классом и видят его всего.) А ты просто решил к этим переменным обратиться, так не пойдёт. ...Вообще книжки читать надо. Там иногда полезные вещи пишут.
0
|
|
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
|||||||||||||||||||||
| 27.09.2009, 02:14 | |||||||||||||||||||||
|
вот так скомпилировалось:
При чём в cmd консоли что-то сосчиталось всё-таки ![]()
0
|
|||||||||||||||||||||
|
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
|
|
| 27.09.2009, 15:06 [ТС] | |
|
kravam, на сколько я понимаю что я написал в проге я и пытаюсь обратится к этим переменным через friend функцию.
easybudda с выражением проблем не должно быть тк в предыдущей лабе оно работало.
0
|
|
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
|
| 27.09.2009, 15:22 | |
|
YAUHEN, Да она у меня и без "выражения" вылетает. Кстати, самому интересно, с какого перепуга...
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|
| 27.09.2009, 15:59 | |
|
YAUHEN, прошу прощенья, не заметил.
0
|
|
|
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
| 27.09.2009, 20:36 | |
|
Всё дело в передаче аргумента. Напиши в функциях не (X obj), а (X &obj), а ещё лучше (const X &obj).
Если интересна суть происходящего, то дело вот в чём - при передаче объекта в функцию срабатывает конструктор копирования. Поскольку он не объявлен явно, срабатывает созданная компилятором версия, поэлементно копирующая члены в новый объект. В нашем случае - указатели. При выходе из функции срабатывает деструктор аргумента и выделенная память (на которую ссылается как объект параметра, так и породивший его объект, живущий в функции main) уничтожается, после чего указатели объекта, сидящего в функции main начинают указывать "в никуда". Дальнейшее обращение по данным указателям и вызывает исключительную ситуацию.
1
|
|
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
||||||
| 27.09.2009, 21:26 | ||||||
|
Да,
так
0
|
||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|||||||||||||
| 01.03.2013, 13:34 | |||||||||||||
|
Да нет конечно. Замечу также, что деструктор, сработающий при выходе из run никакого влияния на память, на которую указывают указатели (я про x, y и z) не окажет- ибо его нет, этого деструктора. А если мы его напишем:
Тем не менее, конечно, правильно писать
++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++
0
|
|||||||||||||
| 01.03.2013, 13:34 | |
|
Помогаю со студенческими работами здесь
9
Дописать конструктор и деструктор для класса Создание класса с перегрузкой операторов конструктор и деструктор
Нужно ли прописывать конструктор и деструктор для чисто виртуального абстрактного класса Определить конструктор без параметров, конструктор с одним параметром, конструктор с двумя параметрами, деструктор Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|