Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ZiP-777
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 24
#1

Классы, статические элементы - C++

22.05.2012, 06:34. Просмотров 838. Ответов 4
Метки нет (Все метки)

Помогите разобрать, что делает данный кусок программы. Желательно построчно - на уровне работы компилятора. Спасибо.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
class A{
        int val;
static  A *all[10];
public:
    A(int n=0) { val = n;
        for (int i=0; i<10; i++)
            if (all[i]==NULL) { all[i]=this; break; }
    }
    A(A &r) { val = r.val;
        for (int i=0; i<10; i++)
            if (all[i]==NULL) { all[i]=this; break; }
    }
    ~A() {
        for (int i=0; i<10; i++)
            if (all[i]==this) { all[i]=NULL; break; }
    }
static  int max(){
        int v=0;
        for (int i=0; i<10; i++)
            if (all[i]!=NULL && all[i]->val > v) 
                v=all[i]->val;
        return v; }
     };
 
A *A::all[10]={NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};
 
int F(){
   A c(14),d(16);
   return A::max();
   }
 
A gl(10);
 
void main(){
   int e,f,g,h;
   e=A::max();
   A a(10),b(12);
    f=F();
   g=A::max();
   }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2012, 06:34     Классы, статические элементы
Посмотрите здесь:

Классы возможностей(Mixin классы) C++
статические массивы C++
C++ классы/дочерние классы/методы
Статические переменные C++
Создать классы, имеющие элементы-данные и функцию печати. C++
Статические члены C++
Классы, включающие другие классы C++
C++ статические переменные
Статические функции C++
Классы (статические члены и конструктор копирования) C++
Задача на классы и статические указатели C++
Статические элементы класса. Inline-методы. (Решение задачи) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ZiP-777
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 24
27.05.2012, 19:03  [ТС]     Классы, статические элементы #2
Ап...

Добавлено через 2 часа 1 минуту
Ребят, очень нужна ваша помошь.
Lewis_Husk
0 / 0 / 0
Регистрация: 28.03.2012
Сообщений: 13
27.05.2012, 19:57     Классы, статические элементы #3
Не понимаю, насчёт уровня компилятора, но попытался расписать на своём примитивном уровне:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
using namespace std;
//Класс А
class A{
        int val;    
static  A *all[10];                                  //Массив указателей на объект класса А, 
public:                                              //поле существует для всех объектов класса в единственном экземпляре
    A(int n=0) {                                     //Конструктор
        val = n;
        for (int i=0; i<10; i++)                     //Цикл со счётчиком
            if (all[i]==NULL) { all[i]=this; break; }//Если элемент массива не равен нулевому указателю, то
    }                                                //присвоить ему константный указатель на вызвавший функцию объект 
    A(A &r) {                                        //Не понял
        val = r.val;
        for (int i=0; i<10; i++)
            if (all[i]==NULL) { all[i]=this; break; }
    }                                                
    ~A() {                                           //Деструктор
        for (int i=0; i<10; i++)
            if (all[i]==this) { all[i]=NULL; break; }
    }
static  int max(){
        int v=0;
        for (int i=0; i<10; i++)
            if (all[i]!=NULL && all[i]->val > v) 
                v=all[i]->val;
        return v; }
     };
 
A *A::all[10]={NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; //Инициализировать элементы массива нулевыми указателями
 
int F(){
   A c(14),d(16);
   return A::max();
   }
 
A gl(10);
 
int main(){
   int e,f,g,;
   e=A::max();
   A a(10),b(12);
    f=F();
   g=A::max();
   }
yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
27.05.2012, 20:15     Классы, статические элементы #4
13 строка: похоже на конструктор копирования
22 строка: член-функция поиска какого - то максимума...(скорее всего максимального член-данного val)
32 строка: функция которая возвращает максимум иницализированных объектов
3 строчку не совсем понял..
Avazart
7063 / 5240 / 262
Регистрация: 10.12.2010
Сообщений: 23,051
Записей в блоге: 17
27.05.2012, 20:43     Классы, статические элементы #5
Ну тут класс - не столько класс как оформление кода.
Есть массив значений(статическая переменная) и ф-ции работающие с ним (методы) и все в одном простанстве имен
Yandex
Объявления
27.05.2012, 20:43     Классы, статические элементы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru