Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование).docx
Скачиваний:
32
Добавлен:
28.10.2018
Размер:
52.68 Кб
Скачать

15)Встроенные функции.-

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

Обычно встроенными делаются малые по размеру функции , так как их использование делает текст программы больше , хотя такая программы выполняется быстрее. На содержимое функции , объявляем как inline сущ. список ограничений , так не допускается inline для функций принимающих оператор цикла , операторы switch и goto можно . Кроме того определение встроенной функции должно обязательно предшествовать ее вызову . Кроме того компилятор может без всякого предупреждения проигнорировать inline .

16)Операция разрешения видимости .(::)

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

#include <stdio.h>

Int a=10;

Void main (void){

Int a=100;

If (a>0){

Int a=1000;

Printf (“a=%d\n”,a);

Printf (“a=%d\n”,a++);}}

17)Пространства имен.

Язык Си++ позволяет разрешать конфликты между разными переменными с одним именем , которые происходят из-за участия в разработке большого числа программистов . Речь идет о глобальных переменных , так как конфликты между локальными и глобальными разрешаются в пользу локальных . Проект можно разбить на части определив для этих частей различные пространства имен. Для определения пространств имен используют следующий синтаксис :

Namespace имя {…}

Для явного обращения к переменной из конкретного пространства имен используют префикс с названием соответствующего пространства имен и операцией разрешения видимости .

Namespace sonya {

Int x;

Namespace sonya1{

Int x;}}

T=sonya::sonya1::x+2;

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

Namespace AAA {int Fun (int I){return I;}}

Namespace BBB {int Fun (int i){return i*I;}}

Void main (void) {using BBB::Fun;

Int x=7,y;

Y=Fun(x)

Printf (“%d\n”,y);}

Вторая форма использования using : using namespace имя.

В этом случае указанное пространство имен будет приниматься по умолчанию без указания префиксов , если используются локальные переменные с совпадающими именами.

Namespace A1{int x=11; int y=111; int w=1111;}

Namespace A2{int x=22; int y=222; int z=2222;}

Void main (void)

{using namespace A1;

Using namespace A2;

Using A2::x;

Printf (“x=%d;y=%d;z=%d;w=%d”,x,A1::y,::z,w);}

В итоге программы выведет : x=22,y=111,z=2222,w=1111

18)Перегруженные функции.-

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

Void showmes (int nom)

{printf (“message:%s\n”,spisok[nom]);}

Void showmes (char *msg)

{printf (“message:%s\n”,msg);}

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

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

19)Особенности описания переменных в программах на Си++-

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