Статические элементы класса Объявление: static тип имя; Пример статического метода: MyClass { public: static int a() {…}; } Обращение (используется полное имя): MyClass::a(); Пример №11. Определение количества существующих и созданных объектов класса class Base{ static int count1; static int count2; public: static void show_count(void); Base (void); ~ Base (void); }; Base::Base (void) { count1++; count2++; } Base::~Base (void) { count2--; } void Base::show_count(void) { cout<<“Создано объектов:”<<count1<<“\n”; cout<<“Существующих объектов:”<<count2<<“\n”; } int Base::count1; int Base::count2; Пример №11 (продолжение) Результат работы: int main() { Base::show_count(); Base a, b, c, *p; a. show_count(); Base x, y, z; Base::show_count(); z. show_count(); p=new Base; Base::show_count(); delete p; Base::show_count(); return 0; } Создано объектов: 0 Существующих объектов: 0 Создано объектов: 3 Существующих объектов: 3 Создано объектов: 6 Существующих объектов: 6 Создано объектов: 6 Существующих объектов: 6 Создано объектов: 7 Существующих объектов: 7 Создано объектов: 7 Существующих объектов: 6 Дружественные функции class line; class point{ int x, y; int color; public: friend int f_color (line l, point p); void set_color(int c) {color=c}; … }; class line { int nx, ny; int color; public: friend int f_color (line l, point p); void set_color(int c) {color=c}; … }; // описание функций класса point // описание функций класса line // описание дружественной функций int f_color (line l, point p) { If (l.color==p.color) return 1; return 0; } int main () { line l; point p; l.set_color(Red); p.set_color(Green); If (f_color(l,p)) cout<<“Одинаковые цвета\n”; else cout<<“Разные цвета\n”; return 0; } Дружественная функция – элемент класса class line; class point{ int x, y; int color; public: int f_color (line l); void set_color(int c) {color=c}; … }; class line { int nx, ny; int color; public: friend int point::f_color (line l); void set_color(int c) {color=c}; … }; // описание функций класса point // описание функций класса line // описание дружественной функций int point::f_color (line l) { If (l.color==color) return 1; return 0; } int main () { line l; point p; l.set_color(Red); p.set_color(Green); If (f_color(l,p)) cout<<“Одинаковые цвета\n”; else cout<<“Разные цвета\n”; return 0; } Дружественные классы class X {…}; class Y { … friend class X; … };