Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа Renesas - High-Perfomance Embedded Workshop https://www.cyberforum.ru/ cpp/ thread186038.html
Пожалуйста поделитесь знаниями! Расскажите о Renesas - HEW; знаю что в ней можно написать прогу на С, а каковы еще ее возможности?
Поиск исходников алгоритма шифрования DES C++
Друзья, подскажите где найти исходники алгоритма шифрования DES, желательно на Visual C++ без использования WinAPI, но если есть просто C++ или С, то тоже сгодится. Советы по использованию поисковых...
C++ Реализация событий в С++
Мне нужно реализовать события, как в Дельфи или С++ Builder, на Visual C++. Но стандартный С++ не поддерживает указатели на функции-члены класса. В своём блоге за 02.11.10, я попытался расписать, как...
C++ Нужен учебник по стандартным функциям/классам Нужен учебник по стандартным функциям/классам C и C++, Борланд С++ буилдер, etc на русском. Во-первых не дублируйте темы. Во-вторых разберитесь как-нибудь с транслитом. И кстати почитайте правила... https://www.cyberforum.ru/ cpp/ thread184511.html
C++ Ввод зарезервированных символов ASCII https://www.cyberforum.ru/ cpp/ thread184481.html
Здраствуйте! Есть консольная программа(си++,ос хр)... как в консоли ввести "крякодзябы"? мне нужно ввести в консоль символы которые за таблицей ascii кодов имеют коды(dec): 181,192,202...ето...
MPI, нахождение простых чисел C++
Здравсвуйте! Пишу программу для нахождения простых чисел. Пишу в Visual Studio 2008 на C++. Программу написал и она работает на нескольких ПК. Но проблема в том, что результаты в главный процесс...
C++ Как написать плагин для notepad++?
как написать плагин для notepad++? есть какой-нибудь мануал?
C++ Распознать символы с картинки (капчи) здравствуйте! вопрос такой: имеется заранее известная картинка. картинка четкая (это НЕ капча). на картинке в известных местах находятся 5 цифр. делается скриншот. необходимо по нему узнать эти 5... https://www.cyberforum.ru/ cpp/ thread183287.html
C++ Книга для начинающего https://www.cyberforum.ru/ cpp/ thread183177.html
Посоветуйте книгу для первокурсника по c++. препод посоветовал гебрерда шилдта "C++. Базовый курс". но сейчас не могу найти ее в продаже а срочно надо. посоветуйте альтернативу....
C++ [СИ] Циклический буфер переменной длины Мне дали задание для микроконтроллера (не важен какой, главное, алгоритм) написать циклический буфер переменной длины, равномерно распределенный по всей памяти (EEPROM), чтоб исключить перезапись в... https://www.cyberforum.ru/ cpp/ thread182867.html
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
08.11.2010, 12:32 0

Вызов деструкторов членов класса

08.11.2010, 12:32. Просмотров 2894. Ответов 10
Метки (Все метки)

Ответ

Гм. Я бы выразился в том смысле, что приведенный код не просто плохой - он очень плохой. Надеюсь, коллега Alexanches найдет время его поправить. Проблемы, которые я вижу с ходу:
1. Совершенно непонятно, какой из классов владеет памятью, выделяемой под строку. Выделяется память в одном классе, удаляется в совершенно другом.....
2. В конструкторе класса cName переменной fio присваивается адрес временного объекта; и куда будет указывать эта переменная после завершения тела конструктора - даже Б.Г. не знает....

Я бы предложил переделать этот код следующим образом:
1. Четко определить "зоны ответственности" классов. Так, класс MyString должен только хранить строку и предоставлять определенные операции над ней. Он же исключительно отвечает за выделение/удаления необходимой для строки памяти. Класс же cName должен хранить имя как готовый объект класса MyString, при этом внутреннее устройство класса MyString ему совершенно не интересно.
2. Исходя из этого, реализовать в классе MyString:
- конструктор по умолчанию, который должен инициализировать пустую строку;
- конструктор из const char*;
- правильные конструктор копирования и оператор присваивания;
- оператор + для конкатенации строк;
- ну и, возможно, оператор преобразования в const char* для вывода строки функцией типа printf, или же еще лучше дружественный оператор << для вывода в поток.
При этом все выделение и освобождение памяти должен выполнять класс MyString.
3. А класс cName должен просто хранить имя в член-переменной класса MyString, ну и предоставлять какой-то необходимый доступ к ней. Необходимо реализовать:
- конструктор из набора параметров - const char*, как написано - фамилия, имя, отчество.... и т.д.
- возможно, какие-то еще функции....

Во.

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

Вызов метода класса из другого класса
Есть два класса &quot;нижнего уровня&quot; и один &quot;верхнего уровня&quot; Классы &quot;нижнего уровня&quot; имеют методы с...

Вызов членов и объектов с наследника класса
Есть базовый класс и два наследника: class CBase { public: int iNum; ...

Отладчик и вызов деструкторов
Всем привет. Как в отладчике посмотреть, были ли вызваны деструкторы локальных объектов функции?

Наследование - вызов конструкторов и деструкторов
Делаю два класса - предок и потомок: class class_1_type { private: int t; public: ...

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