Меню
Разработки
Разработки  /  Информатика  /  Презентации  /  Прочее  /  Статические поля класса С++

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

Презентация использовалась на занятиях профессионального модуля в ОПК СТИ НИТУ МИСиС

21.12.2017

Содержимое разработки

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

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

class student {  …  static int count; public:  student (char *f, char *n, int a = 20) : age (a)  { fam = new char [20]; name = new char [20];  strcpy (fam, f); strcpy (name, n); count++; } …  void showcount() { cout  static void setcount (int n) { count = n; } }; int student :: count; int main () { student::setcount(0);  student a(

class student

{ …

static int count;

public:

student (char *f, char *n, int a = 20) : age (a)

{ fam = new char [20]; name = new char [20];

strcpy (fam, f); strcpy (name, n); count++; }

void showcount() { cout

static void setcount (int n) { count = n; }

};

int student :: count;

int main ()

{ student::setcount(0);

student a("Ivanov", "Boris"), b("Sokolova", "Olga", 19);

a.showcount();

return 0;

}

 Константные методы определены со словом const и не могут изменять поля  объекта.  Константные объекты недоступны для изменения. Для таких объектов можно использовать только константные методы.

Константные методы определены со словом const и не могут изменять поля объекта.

Константные объекты недоступны для изменения. Для таких объектов можно использовать только константные методы.

class student { …  void show () const   { cout … }; int main () { const student a(

class student

{ …

void show () const

{ cout

};

int main ()

{ const student a("Ivanov", "Boris"), b("Sokolova", "Olga", 19);

a.show(); b.show();

return 0;

}

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

Дружественные функции могут получить доступ к скрытым элементам класса.

Дружественная функция объявляется внутри класса с ключевым словом friend.

Дружественная функция может быть либо обычной функцией, либо методом другого ранее определенного класса.

Одна функция может быть дружественной для нескольких классов.

Класс может быть описан как дружественный внутри другого класса. Все методы дружественного класса могут получить доступ к скрытым элементам класса.

class _time { int h,m;  public:  _time ( int hours = 0, int minutes = 0)  { h = hours; m = minutes; }  friend void settime( _time &t, int hr, int mn)  { t.h = hr; t.m = mn; }  void show()  { cout   … .  }; int main() { _time t ; settime(t,11,10);  t.show();  return 0;  }

class _time

{ int h,m;

public:

_time ( int hours = 0, int minutes = 0)

{ h = hours; m = minutes; }

friend void settime( _time &t, int hr, int mn)

{ t.h = hr; t.m = mn; }

void show()

{ cout

… .

};

int main()

{ _time t ; settime(t,11,10); t.show(); return 0; }

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

С++ позволяет переопределить операции так, чтобы они работали с экземплярами классов.

Перегрузить можно все операции кроме

. ?: :: sizeof

При перегрузке сохраняются количество аргументов, приоритеты операций и правила ассоциаций.

Перегрузка производится с помощью специальных функций-операций : operator

Функции-операции не наследуются и не могут быть статическими.Функция-операция может быть дружественной функцией либо методом класса.

60) { h++; m-=60; } h = h % 24; return _ t ime(h,m) ; } _ time & operator ++ () { ++m; if (m == 60) { ++h; m=0; } h = h % 24; return *this; } _time operator ++ (int) { _time t = *this; ++m; if (m == 60) { ++h; m=0; } h = h % 24; return t; } }; int main() { _time t(12,30), p (14, 35) , r; r = t + p; p = ++ r; t = r++; r.show(); p.show(); t.show(); return 0;} " width="640"

class _time

{ …

friend _time operator+ (_time time1, _time time2)

{ int h = time1.h + time2.h; int m = time1.m + time2.m;

if (m60) { h++; m-=60; } h = h % 24; return _ t ime(h,m) ; }

_ time & operator ++ () {

++m; if (m == 60) { ++h; m=0; } h = h % 24;

return *this; }

_time operator ++ (int) {

_time t = *this; ++m; if (m == 60) { ++h; m=0; }

h = h % 24; return t; }

};

int main() { _time t(12,30), p (14, 35) , r;

r = t + p; p = ++ r; t = r++; r.show(); p.show();

t.show(); return 0;}

T& operator = (const T&) Пример: _time & operator =(const _time & t) { h = t.h; m = t.m; return *this; }

T& operator = (const T&)

Пример:

_time & operator =(const _time & t)

{ h = t.h; m = t.m; return *this; }

class vector {  int size; int *p;  public: vector ( int n = 10) : size(n) { p = new int [size]; } ~vector () { delete [] p; } int& operator [] (int i)  { if (isize)  { cout  r eturn p[i];} }; int main() { vector a (3) ;   a[0] = 1; a[1] = 2; a[2] = 3;   a.show();  return 0;}

class vector

{ int size; int *p;

public:

vector ( int n = 10) : size(n) { p = new int [size]; }

~vector () { delete [] p; }

int& operator [] (int i)

{ if (isize)

{ cout

r eturn p[i];}

};

int main()

{ vector a (3) ;

a[0] = 1; a[1] = 2; a[2] = 3;

a.show(); return 0;}

 Операция не имеет возвращаемого значения и параметров.  operator имя_типа()  class _time { …  operator int() {return h*60+m;} …  } int main() { _time t (15,20);  cout }  Обратное преобразование выполняет конструктор с единственным параметром.

Операция не имеет возвращаемого значения и параметров.

operator имя_типа()

class _time { …

operator int() {return h*60+m;}

}

int main()

{ _time t (15,20);

cout

}

Обратное преобразование выполняет конструктор с единственным параметром.

b ? a : b; } }; int main() {cout } " width="640"

В функциональном классе переопределена операция вызова функции () .

class maximum

{ public:

int operator () (int a, int b)

{ return ab ? a : b; }

};

int main()

{cout

}

-80%
Курсы дополнительного образования

Основы HTML

Продолжительность 72 часа
Документ: Cвидетельство о прохождении курса
4000 руб.
800 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Статические поля класса С++ (46 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт