Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
369164_46F07_otvety_na_bilety_po_oop_si.doc
Скачиваний:
44
Добавлен:
24.12.2018
Размер:
613.38 Кб
Скачать

5. Объявление переменных

В любом месте программы, важно лишь то, чтобы переменная была объявлена до ее использования. Переменные типа int могут иметь размер 2 или 4 байта в зависимости от компилятора и системы компьютера(16 или 32-разрадная). Перед тем как использовать переменную в C++ надо ее объявить. Для этого указывается тип переменной и ее имя,например:

int a ;

Можно объявить несколько переменных одногог типа в одной строке:

int a , b, c ;

Можно инициализировать(присвоить значение) переменной при объявлении:

int a, b=1, c=10, d ;

при попытке присвоить переменной значение превышающее максимально допустимое,то достигнув максимального значения отсчет начинается с минимального значения. например: unsigned short int n; n=65535; cout<<"n="<<n<<endl; n=n+10; cout<<"n="<<n<<endl;

5. Ссылки Что такое ссылка и что с ней можно делать

Ссылку в С++ можно понимать или как альтернативное имя объекта, или как безопасный вариант указателей. Ссылки имеют три особенности, отличающие их от указателей.

  1. При объявлении ссылка обязательно инициализируется ссылкой на уже существующий объект данного типа.

  2. Ссылка пожизненно указывает на один и тот же адрес.

  3. При обращении к ссылке операция * производится автоматически.

Объявление ссылок очень похоже на объявление указателей, только вместо звёздочки «*» нужно писать амперсанд «&».В Си++ можно передавать параметры по ссылкам

void foo (int& x)

{

x = 17;

}

int main ()

{

int z = 5;

foo (z); // теперь z=17

}

  • при вызове функции foo компилятор сам передаст адрес переменной z, нет необходимости специально его просить;

  • внутри функции foo мы обращаемся с x, как с обычной переменной, и только компилятор знает, что внутри это — указатель.

Итак, мы можем передавать по ссылкам параметры. Но ссылки могут существовать и сами по себе, вне всякой связи с передачей параметров.

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

Запись X& обозначает ссылку на X. Например:

int i = 1;

int &r = i; // r и i ссылаются на одно и то же целое

int x = r; // x = 1

r = 2; // i = 2;

Ссылка должна быть инициализирована, т.е. должно быть нечто, что она может обозначать. Следует помнить, что инициализация ссылки совершенно отличается от операции присваивания. Хотя можно указывать операции над ссылкой, ни одна из них на саму ссылку не действует, например,

int ii = 0;

int &rr = ii;

rr++; // ii увеличивается на 1

Инициализатор для типа T должен быть адресом. Однако, инициализатор для &T может быть и не адресом, и даже не типом T. В таких случаях делается следующее:

[1] во-первых, если необходимо, применяется преобразование типа;

[2] затем получившееся значение помещается во временную переменную;

[3] наконец, адрес этой переменной используется в качестве инициализатора ссылки.

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

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

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