Этот кусок кода создает объект класса? Если это так, зачем использовать это таким образом - PullRequest
0 голосов
/ 29 апреля 2020
ClassName *name = new ClassName();

Этот фрагмент кода выше создает объект с именем "name" и типом "ClassName"? Если это так, то почему мы не можем использовать это ClassName name();? Почему мы используем «новое» ключевое слово? Это из-за того, что мы создаем его в куче?

1 Ответ

1 голос
/ 29 апреля 2020

Нет. Кусок кода не создает объект с именем «name» и типом «ClassName».

Он создает и инициализирует объект с именем «name» и типом «указатель на ClassName». Переменная «name» будет содержать адрес полностью сконструированного объекта типа «ClassName». Это называется «построение объекта динамического c срока хранения».

Зачем создавать объекты динамического c срока хранения? Ответ заключается в том, что другие три типа продолжительности хранения (automati c, stati c, thread-local) не подходят и являются лучшим решением для проблемы, которую вы пытаетесь решить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...