Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Понятие принципа создание динамических объектов 
:(
    Опции темы
mister2010
Дата 3.6.2010, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



Статические объекты хранятся в стеке,части оп памяти ,а динам. объекты в куче, части оп памяти. Так?
PM MAIL   Вверх
djamshud
Дата 3.6.2010, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



mister2010, переменные, объявленные в функции, параметры функций проходят через стек - часть оп. Динамически созданные хранятся в куче, части оп.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mister2010
Дата 3.6.2010, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



Всё хранится в виде объектов в статической и динамической памяти? Если да, то почему?
PM MAIL   Вверх
djamshud
Дата 3.6.2010, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Вы ЕГЭ по информатике онлайн сдаете что ли?


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mister2010
Дата 3.6.2010, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



Да нет, так чтоб понять для себя.
PM MAIL   Вверх
mister2010
Дата 3.6.2010, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



Как грамотно ответить что означает вот это объявление первой и второй строки?

Код

     Box *d 

     В= new Box;


Это сообщение отредактировал(а) mister2010 - 3.6.2010, 23:37
PM MAIL   Вверх
djamshud
Дата 3.6.2010, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Код

     Box *d; //создание указателя на стеке
     В= new Box;//создание объекта в куче. d указывает на область памяти под этим объектом (по сути указывает на этот объект).



--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mister2010
Дата 3.6.2010, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



Код

 Box *d; //создание указателя на стеке.----> переменная d будет находится в памяти стека в виде объекта?


d  -  это ведь не объект, это только переменная которая будет содержать адрес объекта, какого?
Как узнать имя  динамического объекта?
PM MAIL   Вверх
djamshud
Дата 3.6.2010, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



>это только переменная которая будет содержать адрес объекта, какого?

Да. Переменная создается на стеке, объект - в куче. Переменная содержит адрес этого объекта

>Как узнать имя  динамического объекта?

Имя? Переменной-указателя - никак. На один объект может указывать стопицот указателей. Название типа - через RTTI, но это не используется в обычной практике.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mister2010
Дата 4.6.2010, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



Код

 Переменная создается на стеке, объект - в куче


1)А статические объекты тоже в куче создаются ? Стек не содержит объектов?
2) Box *d = new Box;  
d это только переменная которая будет содержать адрес объекта, а почему объекта?

Если я напишу d->ser();   Где тут указание на объект?
Это указатель на функцию класса.

Это сообщение отредактировал(а) mister2010 - 4.6.2010, 00:10
PM MAIL   Вверх
djamshud
Дата 4.6.2010, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



>А статические объекты тоже в куче создаются ?

Они создаются в третьей области памяти - статической. Я же писал об этом!

>Стек не содержит объектов?

Box d создает объект d типа Box на стеке. В вашем же примере d=new Box стек объектов не содержит.

>а почему объекта?

Потому что new Box создают новый объект типа Box.

>Если я напишу d->ser();   Где тут указание на объект?

d - "указание на объект". А ->ser() вызов функции (метода) этого объекта.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mister2010
Дата 4.6.2010, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



Код

d - "указание на объект". А ->ser() вызов функции (метода) этого объекта. 


"указание на объект" - Как узнать на какой объект ссылается указатель д если как вы говорите у динамического объекта нету имени?


Это сообщение отредактировал(а) mister2010 - 4.6.2010, 00:26
PM MAIL   Вверх
djamshud
Дата 4.6.2010, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



>"указание на объект" - Как узнать на какой объект ссылается указатель д если как вы говорите у динамического объекта нету имени?

Неправильно:
Код

d=new Box//d указывает на новый объект
d=new Box//старый объект просран (но в памяти все равно где-то валяется). d указывает на еще один вновь созданный объект


Правильно:
Код

d1=new Box
d2=new Box
d=...//в ходе каких-нибудь манипуляций присваиваем d1 или d2
if(d==d1)...//так мы узнаем, что d ссылается на объект из-под первого new Box
if(d==d2)...//аналогично, но теперь - на второй.



--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mister2010
Дата 4.6.2010, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



Код

if(d==d1)...//так мы узнаем, что d ссылается на объект из-под первого new Box
if(d==d2)...//аналогично, но теперь - на второй.


На какой объект я так и не понял?
Например возьмём первый иф. Если объект под именем d равен объекту по имени d1, тогда что может быть?
Каким образом я в этом случаи узнаю на какой объект ссылается указатель от этой строки?
Код

Box * d = new Box;


Это сообщение отредактировал(а) mister2010 - 4.6.2010, 00:56
PM MAIL   Вверх
djamshud
Дата 4.6.2010, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



>Каким образом я в этом случаи узнаю на какой объект ссылается указатель от этой строки?

После этой строки d будет указывать на только что созданный объект. Оператор new как раз возвращает этот указатель, а d= - присваивает его указателю d. То есть вы знаете об этом. Вы его создали и помните, что d - это вооон тот объект.

В общем попробуйте сами подумать и поэкспериментировать. Я спать. И вам спокойной ночи.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.