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

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

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

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

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

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

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

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

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

В чем разница между push_back и push? - C++
Подскажите пожалуйста, в чем состоит отличие Push_back и просто Push? Они оба насколько я знаю добавляют значение в конец, но например у...

В чем разница между вектором и массивом - C++
Я учу язык С/С++ и хотел у вас спросить в чем разница между вектором и массивом ? кроме тогдо что вектор создается vector<int> m; а массив...

В чем разница между управляемой и неуправляемой кучей? - C++
Здравствуйте.... извиниТЕ если кому-либо покажется вопрос глупым, но хоть убейте, понять не могу в чем разница между native и managed...

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

Альтернатива (если не хотите освобождать память вручную) - использовать интеллектуальные указатели, которые, по сути, сами являются объектами классов. Например, auto_ptr.
Faruq
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 29
26.02.2014, 11:44  [ТС]     В чем разница между ClassName cn и ClassName cn = new ClassName()? #6
Всем спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2014, 11:47     В чем разница между ClassName cn и ClassName cn = new ClassName()?
Еще ссылки по теме:

В чем разница между классом и шаблоном класса? - C++
Помогите ответить. В чем разница между классом и шаблоном класса?

В чем разница между заголовочными файлами и библиотеками - C++
В чем разница между заголовочными файлами и библиотеками? И, вообще, какова структура библиотеки в С++?

В чем разница между uinptr_t, size_t, ptrdiff_t - C++
В чем разница между uinptr_t, size_t, ptrdiff_t. Когда и какой из типов использовать и могут ли они отличаться друг от друга размером?

Объясните в чем разница между Visual C++ и С++ и C++ Builder - C++
Объясните в чем разница между С++ Visual C++ и C++ Builder. Просто интересно для себя


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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.02.2014, 11:47     В чем разница между ClassName cn и ClassName cn = new ClassName()? #7
Цитата Сообщение от Extrim88 Посмотреть сообщение
auto_ptr.
Устаревший класс и не рекомендованный к использованию. Используйте std::unique_ptr
Yandex
Объявления
26.02.2014, 11:47     В чем разница между ClassName cn и ClassName cn = new ClassName()?
Ответ Создать тему
Опции темы

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