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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Класс Rectangle совпадает с функцией Rectangle http://www.cyberforum.ru/cpp/thread186792.html
Пишу свой класс Rectangle, который при отрисовки использует функцию Rectangle из GDI. Возникает ошибка из-за того, что имена одинаковые. Но менять имя своего класса я, естественно, не хочу... Как решить противоречие?
C++ Считывание из файла есть файл с настройками prog.conf вида: date = 01.02.2010 time = 15:05:45 step = 0.5 ... есть переменные: day, month, year, step, time тоесть дату нужно разбить на день, месяц, год... время надо перевести в милисекунды с начала суток http://www.cyberforum.ru/cpp/thread186770.html
C++ Составить программу вычисления числового ряда для известного числа членов ряда N
Пожалуйста, как на C++ выполнить это задание, много времени потратил и все никак. Работает частично, но что-то я упускаю. Составить программу вычисления числового ряда для известного числа членов ряда N. Y=(3^-1/2)*(4^2/-5)*(5^-3/8)*(6^4/-11)...
C++ Программа Renesas - High-Perfomance Embedded Workshop
Пожалуйста поделитесь знаниями! Расскажите о Renesas - HEW; знаю что в ней можно написать прогу на С, а каковы еще ее возможности?
C++ Поиск исходников алгоритма шифрования DES http://www.cyberforum.ru/cpp/thread185941.html
Друзья, подскажите где найти исходники алгоритма шифрования DES, желательно на Visual C++ без использования WinAPI, но если есть просто C++ или С, то тоже сгодится. Советы по использованию поисковых систем прошу не давать.
C++ Необходимо понять процесс решения Даны 4 точки: A (x1, y1, z1), B (x2, y2, z2), C (x3, y3, z3), D (x4, y4, z4) Задания: Составить уравнения: 1. Прямой AB 2. Плоскости ABC 3. Прямой DM, перпендикулярной плоскости ABC 4. Прямой CN, параллельной прямой AB подробнее

Показать сообщение отдельно
CheshireCat
Эксперт С++
2910 / 1238 / 78
Регистрация: 27.05.2008
Сообщений: 3,321
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*, как написано - фамилия, имя, отчество.... и т.д.
- возможно, какие-то еще функции....

Во.
 
Текущее время: 15:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru