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

Немного о динамическом выделении памяти ... - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ помогите с islower() и setfill() http://www.cyberforum.ru/cpp-beginners/thread344111.html
1)Библиотечная функция islower() принимает в качестве аргумента один символ (букву) и возвращает ненулевое целое значение в том случае, если буква является строчной, и нулевое, если буква является...
C++ Запись условия Здравствуйте, не подскажите как правильно записать условие, если скажем есть int a и оно должно быть равно 1 или 5: if(a== (1||5) \\or if(a==1||5) Может я что-то делал не так, но у меня ни один... http://www.cyberforum.ru/cpp-beginners/thread344058.html
C++ может не в тот раздел поместил
вопрос
Исследование структуры FILE или: что вообще можно выудить из этой структуры, указатель на которую мы получаем при открытии файла? C++
Ничего нельзя. Итак, новичкам напомню, что после выполнения кода FILE* f= fopen ("file.txt", "w"); в переменной f содержится указатель на структуру FILE. Если файл file.txt открыт корректно,...
C++ файл целых чисел http://www.cyberforum.ru/cpp-beginners/thread344021.html
Дан файл целых чисел. Нулевых компонентов файле нет. Число отрицательных компонентов равно числу полжительных. Преобразовать файл таким образом, чтобы сначала были положительные числа, а затем...
C++ Вопрос по функциям Есть функция: int fun(char wob, unsigned char s, char name, char opis, uint32_t code) {} Я вызываю её в одном месте приложения: int res = fun(wob, s, name, opis, code); В результате выполнения... подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
22.08.2011, 16:58
Цитата Сообщение от 4e87 Посмотреть сообщение
объявление данных в классе:

C++
1
2
3
4
5
6
class Employee
{..........
      private:
char *firstName;
char *lasrName;
}
конструктор динамически выделяет память для имени и фамилии:
C++
1
2
3
4
5
6
7
8
Employee::Employee(const char *first, const char * last)
{
        firstName= new char[strlen(first)+1];
        assert( firstName != 0);
        strspy( firstName, first);
 
........аналогично для last.....
}
Далее в мэйне:
C++
1
Employee *e1Ptr = new Employee ("Вася", "Пупкин");
Вопрос:необходимо небольшое разъяснение по поводу порядка выделения памяти при объявлении указателя на Employee и в когструкторе.
заранее спасибо.
Порядок следующий. Сначала в стеке создается переменная e1Ptr, затем вступает в действие инициализатор этой переменной, который является значением выражения с оператором new. Этот оператор сначала выделяет память, равную размеру класса. Затем запускает конструктор этого класса. Конструктор последовательно выделяет память под свои члены класса firstName и lasrName

Далее в функции main по завершению работы с этим объектом, вы должны удалить память выделенную 1) для членов объекта firstName и lasrName и для самого объекта. Поэтому вы должны написать деструктор вашего класса, который будет вызван, когда вы напишите опеоатор

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