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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Faruq
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 29
#1

В чем разница между ClassName cn и ClassName cn = new ClassName()? - C++

26.02.2014, 11:23. Просмотров 270. Ответов 6
Метки нет (Все метки)

Добрый день! Собственно вопрос в заголовке темы. Будьте добры расскажите пожалуйста в чем между ними разница.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2014, 11:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос В чем разница между ClassName cn и ClassName cn = new ClassName()? (C++):

Имя_класса + Скобки - int(), className() и.т.д. - C++
Здравствуйте. Появился вопрос. Что означает этот код: int() То есть имя класса + скобки после него? Встретил примерно в таком коде: ...

Как работает class className : private otherClassName {} ? - C++
Приветствую всех. Не могу разобраться, как работает такая конструкция: class CMD_Frame: public C37118{ public: // // ...

В чем разница между С и С++ - C++
Возник вопрос в чем жи разница между С и С++ кроме того, что в С++ есть классы а в С их нету ?

В чем разница между [] и * ? - C++
Думал, что ни в чем, но когда попытался сделать так: (в файле 1) char lc; в файле 2: extern char* lc; Компилятор ругаться не стал,...

В чем разница между X x; и X x()? - C++
Корректный ли этот ответ?

В чем разница между malloc и new? - C++
в чем разница? что лучше использовать?

6
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
26.02.2014, 11:27 #2
В первом случае объект создается на стеке и будет автоматически уничтожен при выходе из области видимости. Во втором - объект создается в куче, удалять его надо уже руками.
P.S. во втором случае должен быть
C++
1
ClassName* cn
, т.е. указатель.
1
Faruq
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 29
26.02.2014, 11:29  [ТС] #3
Tulosba, спасибо. Это только и всего лиж разница? Вопрос тогда. А в чем смысл тогда управлять сбором мусора в ручную? Т.е. почему можно создать объект двумя способами?
0
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
26.02.2014, 11:36 #4
Цитата Сообщение от Faruq Посмотреть сообщение
А в чем смысл тогда управлять сбором мусора в ручную?
Чтобы не управлять вручную можно использовать идиому RAII.
Цитата Сообщение от Faruq Посмотреть сообщение
Т.е. почему можно создать объект двумя способами?
В некоторых случаях объект должен быть локальным, т.е. уничтожаться внутри блока, а в некоторых может потребоваться его передать наружу. Во втором случае и чтобы избежать копирования в самом элементарном случае создается объект в куче и возвращается указатель на него.
1
Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
26.02.2014, 11:41 #5
Цитата Сообщение от Faruq Посмотреть сообщение
А в чем смысл тогда управлять сбором мусора в ручную?
Смысл в том, что каждая операция new, которая выделила блок памяти в куче, требует применения операции delete для ее освобождения. Если этого не сделать вручную, то возникнет эффект утечки памяти.

Альтернатива (если не хотите освобождать память вручную) - использовать интеллектуальные указатели, которые, по сути, сами являются объектами классов. Например, auto_ptr.
0
Faruq
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 29
26.02.2014, 11:44  [ТС] #6
Всем спасибо!
0
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
26.02.2014, 11:47 #7
Цитата Сообщение от Extrim88 Посмотреть сообщение
auto_ptr.
Устаревший класс и не рекомендованный к использованию. Используйте std::unique_ptr
0
26.02.2014, 11:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2014, 11:47
Привет! Вот еще темы с ответами:

В чем разница между new и malloc()? - C++
Всем доброго дня ! Начал читать книгу Пахомов Б. "C/C++ и MS Visual C++ 2008 для начинающих" До этого прочитал С++ за 21 день. ...

В чем разница между Рекурсией и Итерацией? - C++
Рекурсия позволяет сэкономить время но требует больше памяти, а циклы длятся дольше рекурсии но при этом занимают меньше памяти? Я...

В чем разница между MSVC2010 и MSVC2013? - C++
Приветствую! В чем разница между MSVC2010 и MSVC2013? В чем и где это может проявиться? Что стало лучше в, наверно, следующей версии...

В чем разница между Debug and Release? - C++
Какие действия выполняет debug в Visual studio и какие Release, в чем разница? Никогда не задавался этим фундаментальным вопросом, что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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