, а указатель - это просто некоторая переменная, которая содержит адрес переменной
Исправление: указатель может указывать на любой объект;Не обязательно переменная.Переменные имеют имена.В динамическом хранилище могут быть объекты, имена которых не имеют непосредственных имен, например, подобъекты, временные объекты и объекты.
Например, в вашей программе выражение new bank_account()
создает объект в динамическом хранилище.
Что это означает, если указатель объявлен как объект
Действительно неясно, что вы подразумеваете под "объявленным как объект" .Если вы объявляете указатель типа bank_account*
, это означает, что он может указывать на объект типа bank_account
, который является классом.
Если вы объявляете переменную, имеющую указательтипа, тогда объект, названный переменной, является указателем.
и что он на самом деле представляет?
Указатель представляет адрес объекта.Помимо того, что он содержит адрес объекта, он также может иметь нулевое значение указателя (которое указывает на отсутствие объекта) или может иметь недопустимое значение (адрес, который мог содержать объект, но этот объект больше не существует).
Затем я инициализирую переменные, такие как:
(*pointer).account_name ="Random Name";
Чтобы быть педантичным, это технически не инициализирует переменную.Инициализация выполняется для объектов при их создании.Эта переменная-член была создана ранее, и это выражение присваивает ей значение.Но если переменная ранее была неинициализирована, то в разговорной речи было бы совершенно неправильно говорить об инициализации.
, когда я объявляю объект как указатель, на что указывает указатель?
В вашем примере программы pointer
указывает на объект, который был создан в динамическом хранилище, используя ключевое слово new
.
Как правило, указатель указывает на некоторый объект, адрес которого хранится вуказатель или указатель могут вообще не указывать на объект (недопустимое или нулевое значение).
Вы сказали, что объект создан
Да,Выражение new создает объект в динамическом хранилище.
, но я объявил указатель
Да.Вы сделали.
, поэтому указатель указывает на объект?
Вы инициализировали значение указателя с результатом выражения new.Указатель указывает на объект, который был создан в динамическом хранилище.
и как тогда называется этот объект?
Объекты не имеют имен.Однако: у переменных есть имена, и переменные связаны с объектом, поэтому можно в разговорной речи сказать, что у этих объектов, связанных с переменной, есть имя.Но объекты в динамическом хранилище не именуются переменной.