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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

#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++);}}

 

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

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

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

 

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

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

Void showmes (int nom)

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

Void showmes (char *msg)

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


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

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

 

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


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

 

Определение классов.

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

-Определение класса может одержать один или несколько спецификаторов доступа (public, private, protected)

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

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


Class vyalov {int n;

Point sovest

Public:vyalov (int t);

Vyalov ();

};

 

Элементы класса.

Элементы класса делятся на 2 категории: данные хранящие информацию о представителе класса и элементы функции, реализующие поведение этих представителей.

Элементы данных классов Си++ не могут быть представителями самого этого класса, не могут объявляться как extern и regiset. Элементы данные могут быть перечислениями, битовыми полями, представителями ранее объявленных классов, указателем или ссылкой на этот класс. Элемент-функция – это функция, прототип которой объявлен внутри тела класса. Тело функции так же может записываться прямо в определении класса. В этом случае вместо прототипа будет заголовок. Такая функция автоматически будет встроенной. Если функция определена вне тела класса, то в заголовке перед именем функции помещается имя класса и операция разрешения видимости

Float kvadrat::proverka

 



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 172; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.106.241 (0.008 с.)