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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа Renesas - High-Perfomance Embedded Workshop http://www.cyberforum.ru/cpp/thread186038.html
Пожалуйста поделитесь знаниями! Расскажите о Renesas - HEW; знаю что в ней можно написать прогу на С, а каковы еще ее возможности?
C++ Поиск исходников алгоритма шифрования DES Друзья, подскажите где найти исходники алгоритма шифрования DES, желательно на Visual C++ без использования WinAPI, но если есть просто C++ или С, то тоже сгодится. Советы по использованию поисковых... http://www.cyberforum.ru/cpp/thread185941.html
C++ Реализация событий в С++
Мне нужно реализовать события, как в Дельфи или С++ Builder, на Visual C++. Но стандартный С++ не поддерживает указатели на функции-члены класса. В своём блоге за 02.11.10, я попытался расписать, как...
Нужен учебник по стандартным функциям/классам C++
Нужен учебник по стандартным функциям/классам C и C++, Борланд С++ буилдер, etc на русском. Во-первых не дублируйте темы. Во-вторых разберитесь как-нибудь с транслитом. И кстати почитайте правила...
C++ Ввод зарезервированных символов ASCII http://www.cyberforum.ru/cpp/thread184481.html
Здраствуйте! Есть консольная программа(си++,ос хр)... как в консоли ввести "крякодзябы"? мне нужно ввести в консоль символы которые за таблицей ascii кодов имеют коды(dec): 181,192,202...ето...
C++ MPI, нахождение простых чисел Здравсвуйте! Пишу программу для нахождения простых чисел. Пишу в Visual Studio 2008 на C++. Программу написал и она работает на нескольких ПК. Но проблема в том, что результаты в главный процесс... подробнее

Показать сообщение отдельно
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,370
08.11.2010, 12:32
Гм. Я бы выразился в том смысле, что приведенный код не просто плохой - он очень плохой. Надеюсь, коллега Alexanches найдет время его поправить. Проблемы, которые я вижу с ходу:
1. Совершенно непонятно, какой из классов владеет памятью, выделяемой под строку. Выделяется память в одном классе, удаляется в совершенно другом.....
2. В конструкторе класса cName переменной fio присваивается адрес временного объекта; и куда будет указывать эта переменная после завершения тела конструктора - даже Б.Г. не знает....

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

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