Статические поля

Хотя каждый объект класса имеет одинаковый набор полей и методов, значения полей у каждого объекта свои, а результат вызова методов в общем слу­чае зависит от того, из какого объекта метод вызывается. На самом деле, это не всегда так. Существуют особые члены класса, которые называют статиче­скими. Статический член является общим для всех объектов этого класса. Необходимость в таких статических членах продиктована рядом практических соображений, и их использование во многих случаях оправдано. Например, в программе нужно контролировать количество созданных на данный момент объектов определенного класса. В этом случае создается статический член класса, значение которого определяется количеством объектов в работе. В отличие от обычного поля класса, статическое поле не исчезает при удалении объекта. В некотором смысле статические переменные напоминают глобальные переменные программы. Однако статические переменные, в отличие от глобальных переменных, полностью согласуются с принципами объектно-ориентированного программирования, и в частно­сти с принципом инкапсуляции. Статические члены объявляются, как и обычные, но перед статическим чле­ ном указывается ключевое слово static. В листинге приведен пример для ста­тического поля.
#include
using namespace std;
class SimpleClass{
public:
//Статическое поле:
static int m;
//Нестатическое поле:
int n;
void show();
}obj1,obj2;
//Повторное объявление переменной:
int SimpleClass::m;
int main(){
SimpleClass::m=10;
obj1.n=1;
obj2.n=2;
obj1.show();
obj2.show();
obj1.m=100;
obj2.show();
return 0;}
//Описание метода:
void SimpleClass::show(){
cout << "Static field m = " << m << endl;
cout << "Nonstatic field n = " << n << endl;}
Онлайн всего: 2
Гостей: 2
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте