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

Зачем вызывается конструктор при объявлении указателя на класс - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Из одного массива сформировать другой http://www.cyberforum.ru/cpp-beginners/thread704556.html
Здравствуйте, нужна помощь. Уже второй день пытаюсь решить задачку на массив но ни как не получается. Нужно сформировать из массива x(n) другой массив y(k), состоящий только из положительных...
C++ Создать класс, который определяет можно ли по введенным значениям построить треугольник, и если можно, то какой Создать класс, который определяет можно ли по введенным значениям построить треугольник, и если можно, то какой - прямоугольный или равносторонний). Значения вводятся с клавиатуры. Написать... http://www.cyberforum.ru/cpp-beginners/thread704552.html
C++ Динамический массив
Нужна ваша помощь очень в задании я выполнял -вставить элемент, чтобы он имел указанный индекс(удлинить массив) - проблема, остальное все работает как нужно когда я вывожу ввиде матрицы...
Отсутствует спецификатор типа - предполагается int C++
Здравствуйте форумчане!Вот не понимаю возникновение одной ошибки : При объявлении указатель типа BYTE сыпеться большая куча ошибок: BYTE *bits; Ошибка 3 error C4430: отсутствует спецификатор...
C++ Структуры. Ошибка в коде задачи. http://www.cyberforum.ru/cpp-beginners/thread704518.html
Сделал лабораторную не пойму в чем ошибка. Задание такое: Номер телефона, например (212) 767-8900, можно условно разделить на три части: код города (212), номер телефонной станции (767) и номер...
C++ создать массив из дробей и передать его в функцию, которая изменит каждый чётный элемент путём добавления следующего за этой дробью Надо создать массив из дробей и передать его в функцию, которая изменит каждый чётный элемент путём добавления следующего за этой дробью. Вот код необходимо заплонить воид маин и функцию создать.... подробнее

Показать сообщение отдельно
Alex Z
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136

Зачем вызывается конструктор при объявлении указателя на класс - C++

21.11.2012, 18:18. Просмотров 1922. Ответов 16
Метки (Все метки)

Не знаю, правильно или нет назвал тему...

Вот такая ситуация понятна:
C++
1
2
int * pHeap = new int;
*pHeap = 7;
Здесь мы выделяем в динамической памяти место для хранения числа типа int. Результатом команды new будет адрес ячейки в динамической памяти. Этот адрес мы и присваиваем созданному указателю. Ну а потом по этому указателю уже можем доступаться до ячейки.

Не понятна ситуация, когда в динамической памяти размещается объект какого-то класса. Пишем по-сути так же:
C++
1
Cat *pCat = new Cat;
Цитирую учебник: "В данном случае в операторе new использован стандартный конструктор класса, т.е. конструктор, применяемый без параметров. Следует напомнить, что при создании объекта класса вызов конструктора происходит всегда, независимо от того, размещается объект в стеке или в области динамической памяти." И всё, больше никаких объяснений нет. Я что понять не могу: а зачем вообще в этом случае вызывается конструктор? Ведь конструктор вызывается при создании объекта, например:
C++
1
Cat Frisky;
Здесь создаётся объект Frisky типа (класса) Cat. Значит тут вызывается конструктор. Это понятно. А здесь то зачем конструктор?:
C++
1
Cat *pCat = new Cat;
Тут же вроде объект не создаётся. Я понимаю так: команда new Cat выделяет необходимое количество места в динамической памяти. Например, если класс Cat содержит 2 переменные типа unsigned short int (возраст и вес кота), то будет выделено 4 байта. А потом адрес присваивается указателю pCat. Непосредственно объект то вроде бы не создаётся. Я вначале думал, что может в книге опечатка, нет, по ходу я туплю...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.