163 / 163 / 68
Регистрация: 23.02.2011
Сообщений: 392
|
||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||
Память под объекты через new23.07.2012, 02:57. Показов 1584. Ответов 18
Метки нет (Все метки)
ЗЫ: Есть ли отличие:
0
|
23.07.2012, 02:57 | |
Ответы с готовыми решениями:
18
Динамичная память под объекты Можно ли динамически выделить память под массив указателей, на объекты класса? Как освободить память, выделенную через new под матрицу? Динамическая память. Функции. Массивы .Объекты |
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||||||
23.07.2012, 04:53 | 2 | ||||||||||
Без этого, MSVC ошибку при выполнении выдаёт: обращение к неинициализированнной переменной в строках 21 и 22, если продолжить, то адреса: СССССССС, СССССССС. mingv пропускает и выдаёт: 0x100, 0x4016dd. Вывод: желательно писать, или, хотя бы не обращаться к переменным до инициализации.
Без разницы. Конструктор по умолчанию. Разница в том, что в первом случае указатель, а во втором объект. В практике используется тот, который нужен. К объекту -> не приделаешь. Другое дело, что первый пример можно записать двумя способами: a -> my = 4; или (*a).my = 4; Тут, действительно, принципиальной разницы нет. Пусть эксперты скажут, для хорошего стиля программирования, какой лучше ? Тут нужно разделить понятия: память под переменные a, b, c, d (под указатели) и память под то, на что эти указатели указывают. У вас у коде, а и b содержат адреса в динамической области памяти, по которым находятся созданные объекты класса А, а с и d не на что не указывают, в них, по идее, "мусор" должен быть (поэтому разные компиляторы по разному и обрабатывают вывод их содержимого через cout <<). Чтобы узнать адреса самих переменных нужно написать:
2
|
Каратель
|
||||||
23.07.2012, 10:46 | 3 | |||||
Сообщение было отмечено как решение
Решение
есть:
для POD типов конструктор не вызывается т.е.
3
|
163 / 163 / 68
Регистрация: 23.02.2011
Сообщений: 392
|
||||||||||||||||
23.07.2012, 15:06 [ТС] | 4 | |||||||||||||||
Jupiter, ну а если в класс A добавить конструктор -
0
|
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
23.07.2012, 15:14 | 5 |
1
|
163 / 163 / 68
Регистрация: 23.02.2011
Сообщений: 392
|
||||||
23.07.2012, 16:25 [ТС] | 6 | |||||
Да можно даже написать
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
23.07.2012, 22:09 | 9 | |||||
Если так:
0
|
Каратель
|
|
23.07.2012, 22:21 | 10 |
инициализация POD-типов полностью возложена на программиста
Не по теме: что такое POD-типы - в поиск, а лучше в последний стандарт, ЕМНИП там были внесены изменения в понятие POD-типов
1
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
25.07.2012, 00:30 | 12 |
Так и задумано было. Я тут другое выяснял. Jupiter, написал, что если так:
0
|
70 / 64 / 5
Регистрация: 09.06.2012
Сообщений: 291
|
||||||
25.07.2012, 07:56 | 13 | |||||
хм,а я и не знал,спасибо юпитер
0
|
163 / 163 / 68
Регистрация: 23.02.2011
Сообщений: 392
|
|||||||||||||||||||||
25.07.2012, 16:32 [ТС] | 17 | ||||||||||||||||||||
ВЫВОД:
Если в классе A имеется любой пользовательский конструктор по умолчанию, то разницы между
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
25.07.2012, 23:40 | 19 | |||||
0
|
25.07.2012, 23:40 | |
25.07.2012, 23:40 | |
Помогаю со студенческими работами здесь
19
Можно ли записывать объекты класса string в память, чтоб потом их прочитать? Перераспределение памяти с new под объекты Динамическая память под объекты Где выделяется память под объекты Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |