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

Конструктор и деструктор - C++

Восстановить пароль Регистрация
 
psdmaster
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 44
06.02.2013, 13:40     Конструктор и деструктор #1
На сколько сильно они нужны и можно ли обойтись без них? Что будет если их не описывать?

Что такое утечки памяти? Память забивается только на время выполнения программы или дольше?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
06.02.2013, 13:51     Конструктор и деструктор #2
Вопрос философский из серии нужна ли программисту высшая математика. Конечно, можно обойтись и без них. Можно даже писать на другом языке программирования, можно зарабатывать каким-нибудь другим способом.

Память принадлежит процессу. Она забивается на время существования процесса.
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
06.02.2013, 18:17     Конструктор и деструктор #3
psdmaster, тебе следует почитать про ООП. А насчёт конструктора и деструктора, конечно лучше их определять, разве что в самых простых классах, можно обойтись без них. (и то я всё равно их определяю).
Это сугубо моё мнение, и если я в чёмто не прав, вы уж извините.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.02.2013, 11:19     Конструктор и деструктор #4
Цитата Сообщение от palva Посмотреть сообщение
Вопрос философский из серии нужна ли программисту высшая математика. Конечно, можно обойтись и без них.
Не согласен. Не из того разряда вопрос.
Иногда без конструктора никак не обойтись. Банальный пример - ссылка как поле класса. Инициализировать её можно только в конструкторе и нигде больше. Более того, только в списке инициализации конструктора, про который тоже многие думают, что он не нужен и всё можно сделать в теле конструктора.
Возражение типа "заменить ссылку указателем" имеет место быть, но таким макаром можно дойти и до "заменить С++ джавой", поэтому не считаю такое возражение конструктивным.
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
11.02.2013, 11:40     Конструктор и деструктор #5
Цитата Сообщение от silent_1991 Посмотреть сообщение
ссылку указателем
всегда думал что , это одно и тоже, можете объяснить?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.02.2013, 12:25     Конструктор и деструктор #6
Nixy, указатель:
C++
1
2
3
4
5
6
7
8
void foo(int *ptr)
{
    *ptr = 10;
}
 
// call:
int a;
foo(&a);
Ссылка:
C++
1
2
3
4
5
6
7
8
void foo(int& ref)
{
    ref = 10;
}
 
// call:
int a;
foo(a);
После вызова в обоих случаях в a будет 10.
Yandex
Объявления
11.02.2013, 12:25     Конструктор и деструктор
Ответ Создать тему
Опции темы

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