Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5fan_ru_Obektno-orientirovannoe_programmirovan...doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
351.74 Кб
Скачать

Int (*matrix)[10];

Такое объявление определяет matrix как указатель на массив из 10 целых. Для выделения памяти для матрицы размером 10*10 и присвоения адреса выделенной памяти переменной matrix, следует записать:

matrix= new int[10][10];

Удаление многомерных массивов любой размерности происходит так, как будто они имеют лишь одно измерение:

delete[] matrix;

2.3.Ссылки

Использование указателей в языке С таит в себе ту опасность, что если оператор изменил адрес, хранящийся в указателе, то указатель более не ссылается на то же значение. Если такое изменение было внесено непреднамеренно, то результатом его может быть серьезная ошибка. Кроме того, использование указателей ведет к написанию программ, пестрящих символами-звездочками.

С++ предлагает альтернативу указателям путем использования нового вида переменных – ссылок. Чтобы сделать переменную ссылкой, необходимо после описателя типа поставить знак &, например:

int i=0;

int &ir=i; // ir – это ссылка на i

ir указывает на i подобно указателю. Оператор

cout << “ir=” << ir <<’\n’;

выведет ir=0, то есть использование ссылки похоже на разадресацию указателя.

Ссылка обязательно должна быть инициализирована (т.е. должно быть что-то, для чего она является ссылкой).

Важно!

Однажды инициализировав ссылку, ей нельзя присвоить другое значение!

Нельзя в той же программе, где используется ir как ссылка на i, присвоить ссылке ir адрес другого объекта т.е. ошибкой является:

int j;

ir=j;

Ссылка является алиасом, т.е. синонимом, другим именем объекта.

Сами по себе ссылочные переменные в С++ используются редко. Ссылки очень удобно использовать в качестве параметров функций. Если в прототипе функции указать, что параметр передается по ссылке, функция при вызове получит доступ к адресу переданного ей аргумента. Пример передачи в функцию параметров по ссылке показан в листинге 2.2.

//Листинг 2.2. Передача параметров по ссылке

#include <iostream.h>

void incr(int &aa); // обьявление параметра-ссылки в прототипе функции

Void main(void)

{

int x=1;

incr(x); // неявная инициализация ссылки адресом переменной х

cout << “x=” << x <<“\n”;

}

Void incr(int &aa)

{

aa++;

}

Результатом работы этой программы будет x=2, так как функция получила доступ к содержимому памяти, в которой хранится переменная х посредством передачи параметра по ссылке.

Вывод.

Ссылку можно рассматривать как постоянный указатель, который всегда разадресован, поэтому для него не надо выполнять операцию разадресации.

Контрольные вопросы

1.Что означает перегрузка имен функций в С++?

2.Каким образом в С++ осуществляется динамическое распределение памяти под данные? Каким образом можно освободить память, динамически распределенную программе?

3.Что такое ссылка? В чем различие между ссылкой и указателем? В чем заключается удобство использования ссылок?

3. КЛАССЫ С++

3.1. Класс как абстрактный тип.

Совокупность принципов проектирования, разработки и реализации программ, которая базируется на абстракции данных, предусматривает создание новых типов данных, с наибольшей полнотой отображающих особенности решаемой задачи. Одновременно с данными для каждого типа вводится набор операций, удобных для обработки этих данных. В языке С++ программист имеет возможность вводить собственные типы данных и определять операции над ними с помощью классов.

Класс-это фундаментальное понятие С++, с введением которого язык С++ становится объектно-ориентированным языком.

Класс – это тип, создаваемый программистом на основе уже существующих типов.

Можно дать и более развернутое определение класса:

Класс-это именованный набор компонентов, включающий структуры данных и связанные с ними функции их обработки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]