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

Где храниться поле класса? - C++

Восстановить пароль Регистрация
 
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
27.01.2013, 21:55     Где храниться поле класса? #1
Имеется класс:
C++
1
2
3
4
5
class Foo
{
Man Man; 
Monstr * Monstr; 
}
В куче или стэке храниться элемент Man и Monstr для двух вариантов?
C++
1
2
Foo foo;// Первый вариант
Foo * foo = new Foo(); // Второй вариант
Для какого из вариантов
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2013, 21:55     Где храниться поле класса?
Посмотрите здесь:

В конструкторе вложенного класса инициализируется приватное поле. Потом вызывается функция-метод этого класса и выводит значение этого поля НО НЕ ТО! C++
C++ Статическое поле класса, имеющее тип того же класса
Изменить поле класса C++
Поле класса - динамический массив C++
C++ Только константное статическое поле НЕ МОЖЕТ быть поле членом класса !
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
27.01.2013, 21:58     Где храниться поле класса? #2
первый - стэк
второй - куча
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
27.01.2013, 22:17  [ТС]     Где храниться поле класса? #3
I.M., Для обоих элементов (Monstr и Man)?
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.01.2013, 22:28     Где храниться поле класса? #4
да, для обоих
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
27.01.2013, 22:35     Где храниться поле класса? #5
Цитата Сообщение от vbloodv Посмотреть сообщение
Для обоих элементов (Monstr и Man)?
тебя видать смущает
Цитата Сообщение от vbloodv Посмотреть сообщение
Monstr * Monstr;
так это просто указатель

если написать так
C++
1
2
3
 Monstr * Monstr1;
Monstr  Monstr2;
Monstr1=&Monstr2;
То объект будет лежать на стеке
а если так
C++
1
2
 Monstr * Monstr1;
Monstr1=new  Monstr;
то объект будет лежать в куче
но и в том и в другом случае
указатель Monstr1 будет лежать на стеке

кстати называть объект (ну или указатель) именем класса дело неблагодарное
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
27.01.2013, 23:13  [ТС]     Где храниться поле класса? #6
ValeryS, Спасибо, отлично понял. Нет, меня это не смущает просто через указатель хотел показать что выделение памяти для объект происходит динамически и волновал вопрос, что делать если поле класса в куче, а сам класс(объект конечно же) в стеке...
Yandex
Объявления
27.01.2013, 23:13     Где храниться поле класса?
Ответ Создать тему
Опции темы

Текущее время: 08:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru