Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Статические элементы-функции




Сlass A

Статические элементы-данные

Статические элементы

Лекция 21

Статические элементы-данные - это глобальные переменные, доступные только в пределах области класса. Объявляются при описании класса, а инициализируются после того, как класс описан. Признаком статического элемента является ключевое слово static. Синтаксис написания имеет вид

static тип имя_элемент-данных.

Например,

{

static int x; // Объявление

:::::

};

int A:: x = 125; // Инициализация

Здесь приведен статический элемент данных целого типа. После завершения описания класса А этот элемент инициализирован. Инициализация обязательна! Элемент данных, определенный как static, используется всеми объектами данного класса. Существует только один экземпляр переменной независимо от числа созданных объектов. На самом деле, память под статический элемент выделяется, даже если не существует ни одного объекта данного класса. Именно потому, что это только один экземпляр, обращение к нему имеет вид:

имя_класса:: имя_элемента=данных.

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

 

 

Для работы со статическими элементами данных создаются статические элементы-функции. Их оглавления имеют вид:

static тип_результата имя_функции (параметры).

Параметры – только статические элементы данных.

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

Статическая функция может вызывать только другие статические

функции-элементы данного класса. Не может быть виртуальной. Вызов статической функции имеет вид:

имя_класса:: имя_функции (фактические параметры);

Пример 1 Демонстрирует факт возможности вызова статической функции_элемента даже при отсутствии объектов данного класса.

# include <stdio. h >

class A

{

public:

static void stat_func ()

{

puts (“ Я существую сама по себе!”);

}

};

void main ()

{

A:: static_func (); // Вызов статической функции.

}

Пример 2 Демонстрирует особенности обработки статических и нестатических элементов данных статическими и нестатическими функциями – членами класса.

 

#include<stdio.h>

class coord

{

static float x;

float y;

public:

coord(float a):y(a)

{

}

static void f_stat()

{

puts(“Введите х=”);

scanf(“%f”,&x”);

printf(“x=%f\n”,x);

}

void f_non _stat()

{

puts(“Введите х=”);

scanf(“%f”,&x”);

printf(“x=%f y=%f\n”,x,y);

}

}

float coord::x=12.5;//Инициализация х.

void main()

{

coord w(45);// w.x=12.5;w.y=45.

w.f_stat();//Можно, но через this ничего //не передается.

w.f_non_stat();

coord::f_stat();//Еще один способ//вызова статической функции.

}

В этом примере приведен конструктор инициализации. Он может инициализировать только нестатический элемент данных y. Статическая функция-элемент f_stat() обрабатывает статический элемент данных x. При попытке ввода нестатического элемента данных y его значение не изменится. Статическая функция-элемент не обрабатывает нестатические элементы данных. Зато нестатическая функция-элемент f_non_stat() может осуществлять ввод статического элемента данных x. Если при описании класса приведен прототип статической функции – члена, а сама функция определена позже, то ключевое слово static следует ставить только перед прототипом.

 




Поделиться с друзьями:


Дата добавления: 2015-06-27; Просмотров: 975; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.