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

Автоматический вызов деструктора компилятором - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Библиотека HDFeos и geotiff http://www.cyberforum.ru/cpp-beginners/thread1165031.html
Добрый день. В университете дали задания на писать программу похожую на HEGTool. Она из файла с расширением hdf рисует карту по выбору нужной местности. Но возникли трудности... Есть люди которые работали с этими библиотеками и которые могут помочь?
C++ Поиск полинома Ньютона (Паскаль -> C++) Вот код паскаля: Function POlinom(n: integer; d:real; x,y :per):real; var l:real; k,i:integer; p: real; begin L:=y; P:=1; http://www.cyberforum.ru/cpp-beginners/thread1165026.html
Наследование функции C++
Условие: функция должна быть задана вне класса. { class evm { protected: char *a; public: evm(const evm& src) { int size = strlen(src.a) + 1;
Определить значение целочисленного массива по заданному правилу C++
Даны вещественные массивы B.Опpеделить значения целочисленного массива D по следующему правилу: D=1, если сумма элементов i‐й строки больше 0, D=0 в пpотивном случае. Значение переменной i изменяется от 0 до 4. Подскажите пожалуйста ошибки. #include <stdio.h> int main(int argc, char * argv ) {
C++ Как легко прировнять массиву английский алфавит? http://www.cyberforum.ru/cpp-beginners/thread1164982.html
Привет форумчане. Прошу помочь новичку кодеру,как прировнять английский алфавит в массив без перебора всего алфавита. Спасибо.
C++ Запись строки в файл char name; cin >> name; strcpy(file_txt, name); strcat(file_txt, ".txt"); ofstream user(file_txt); user.open(file_txt); user << name; user.close(); Здравствуйте! Нужна помощь. В этом кусочке кода я делаю так, чтобы создался файл с названием моим формата txt, а в нем было написано только название. Файл создается с желаемым... подробнее

Показать сообщение отдельно
ValeryS
Модератор
6479 / 4945 / 455
Регистрация: 14.02.2011
Сообщений: 16,386
03.05.2014, 17:30     Автоматический вызов деструктора компилятором
Цитата Сообщение от Mr_Torture Посмотреть сообщение
а не могли бы вы чуточку пояснить, что хорошего произойдет, если использовать new?
произойдет другое
ни хорошее, ни плохое а просто другое
Цитата Сообщение от Mr_Torture Посмотреть сообщение
Разве он точно так же не вызывает конструктор?
он это кто?
никто специально деструкторы не вызывает(вообще то можно но чаще всего это не нужно)
деструкторы вызываются автоматически при разрушении объектов
если создать объект в куче( опреатор new)то разрушит объект оператор delete
а если создать в стеке, то объект будет разрушен при выходе из области видимости
например
C++
1
2
3
4
5
6
7
{
 int a=5; //создали в стеке
 int *b=new int(5);// создали в куче, а в стеке создали указатель  b на объект в куче
............................
delete b;// объект в куче разрушен, но указатель остался, указывает "в космос" 
}
// вот здесь разрушен и объект a  и указатель b
Добавлено через 3 минуты
теперь такой вариант
C++
1
2
3
4
5
6
7
{
 int a=5; //создали в стеке
 int *b=new int(5); //создали в куче, а в стеке создали указатель  b на объект в куче
............................
 
}
// вот здесь разрушен и объект a  и указатель b
указатель разрушен, нет его
но объект в памяти остался, никто его не разрушал delete
получили так называемую "утечку памяти" объект в памяти есть и он валидный, но достучатся до него никто не может, указатель утерен
 
Текущее время: 22:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru