Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT | страница 7
>// Включаемый файл для потокового ввода/вывода
>#include
>void main(void) {
> // Определяем переменную iVar
> int iVar = 10;
> // Определяем ссылку iReferenceVar на переменную iVar
> int& iReferenceVar = iVar;
> // Отображаем значение переменной и ссылки
> cout << "iVar = " << iVar << ";
> iReferenceVar = " << iReferenceVar << '\n';
> // Изменяем значение переменной iVar пользуясь ссылкой
> iReferenceVar = 20;
> // Отображаем значение переменной и ссылки
> cout << "iVar = " << iVar << ";
> iReferenceVar = " << iReferenceVar << '\n';
>}
Вы можете использовать ссылки для передачи параметров функциям. При этом фактически вы передаете функции указатель на объект, представленный ссылкой. Внутри функции вы можете работать с ссылкой как с самим объектом, а не как с указателем.
Функция может не только принимать ссылки в качестве своих параметров, она также может возвращать ссылку. Такую функцию можно привести в левой части оператора присваивания.
Распределение памяти
Стандартная библиотека компиляторов содержит специальные функции управления памятью – malloc, free, а также другие разновидности этих функций. Они позволяют получить для использования блок оперативной памяти, и затем отдать его обратно операционной системе.
В Си++ встроены специальные операторы для управления памятью – оператор new и оператор delete . Эти операторы очень удобны для динамического создания переменных, массивов и объектов классов, поэтому мы остановимся на них более подробно.
Операторы new и delete
Оператор new создает объект заданного типа. При этом он выделяет память, необходимую для хранения объекта и возвращает указатель, указывающий на него. Если по каким-либо причинам получить память не удается, оператор возвращает нулевое значение. Оператор new позволяет сразу инициализировать созданную переменную. Приведем формат оператора new:
>new type-name [initializer];
>new (type-name) [initializer];
В качестве аргумента type-name надо указать имя типа создаваемого объекта. Дополнительный аргумент initializer позволяет присвоить созданному объекту начальное значение. Вот простой пример вызова оператора new:
>char *litera;
>int *pi;
>litera = new char;
>pi = new int(3,1415);
В этом примере оператор new используется для создания двух объектов – одного типа char, а другого типа int. Указатели на эти объекты записываются в переменные litera и pi. Заметим, что объект типа int сразу инициализируется значением 3,1415.
Чтобы освободить память, полученную оператором new, надо вызвать оператор delete. Вы должны передать оператору delete указатель pointer, ранее полученный оператором new: