You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Возв[гшн к tct/че<br />
Проблемы, возникающие при работе с указателями на простые переменные, распространяются<br />
и на указатели на объекты. В частности, необходимо гарантировать,<br />
что указатель ссылается на существующий корректный объект. Так, нельзя возвращать<br />
указатель на локально определенный объект, как это сделано в данном примере:<br />
MyClass* myFunct)<br />
{<br />
//эта функция не будет работать правильно<br />
MyClass me;<br />
MyClass* pMC = &mc;<br />
return pMC;<br />
}<br />
После возврата из myFunc () объект тс выходит из области видимости, а значит,<br />
указатель, который возвращает myFunc (), указывает на несуществующий объект.<br />
Использование кучи позволяет решить эту проблему:<br />
MyClass* myFunc(}<br />
{"<br />
MyClc.ss* pMC = new MyClass;<br />
return pMC;<br />
}<br />
С помощью кучи можно выделять память для объектов в самых разнообразных<br />
ситуациях.<br />
использование связанных списков<br />
Связанный список является второй по распространенности структурой после массива.<br />
Основным преимуществом связанного списка служит отсутствие необходимости<br />
задавать фиксированный размер на этапе компиляции: связанный список может<br />
уменьшаться и увеличиваться в зависимости от потребностей программы. Цена такой<br />
гибкости — сложность обращения, поскольку использовать элементы связанного списка<br />
гораздо сложнее, чем элементы массива.<br />
Массив<br />
Массив очень удобен для хранения набора объектов, так как позволяет просто<br />
и быстро обратиться к отдельным его элементам:<br />
MyClass :пс[100];<br />
гас [п 3 ;<br />
//выделяем место под 100 элементов<br />
/ /обратиться к (п+1) -му элементу списка<br />
Однако у массивов есть много весомых недостатков.<br />
Основным недостатком массивов является фиксированность их длины. Можно<br />
спрогнозировать количество элементов в массиве, необходимое для работы программы,<br />
однако, будучи однажды определенным, это количество не может быть изменено.<br />
void fnfint nSize)<br />
(<br />
//создаем массив из п объектов<br />
//MyClass<br />
MyClass* pMC = new MyClass[n];<br />
//теперь длина массива не может<br />
Глава 15. Создание указателей на объекты 165