Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 14.03.2017
Сообщений: 4
1

Класс со статическими членами

14.03.2017, 15:01. Просмотров 418. Ответов 8
Метки нет (Все метки)

Создать класс Alfa таким образом , чтоб при создании первого и уничтожении последнего объекта этого типа на экран выводились соответствующие сообщения . Применять статические компоненты класса
Буду очень рад помощи!)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2017, 15:01
Ответы с готовыми решениями:

Ошибка с статическими членами класса
Доброго времени суток, форумчане! Недавно пришлось вернуться с С# на С++ и я тут же заметил что я...

Дан класс, преобразуйте его в статический класс со статическими методами и продемонстрируйте работу с ним
Дан класс, преобразуйте его в статический класс со статическими методами и продемонстрируйте работу...

Сделать класс с статическими элементами для подсчета вызова функции
Помогите сделать класс с статическими элементами для подсчета вызова функции, плиз.

не линкуется класс с static членами
не линкуется класс с static членами class A { public: static int get(){return aaa;} A(){};...

8
Форумчанин
Эксперт CЭксперт С++
8159 / 5007 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
14.03.2017, 15:18 2
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
#include <iostream>
 
class Alfa
{
    static size_t counter;
    void inc()
    {
        if (!counter++)
            std::cout << "Hello\n";
    }
public:
    Alfa() { inc(); }
    Alfa(const Alfa &) { inc(); }
    Alfa& operator=(const Alfa &) { inc(); return *this; }
    ~Alfa()
    {
        if (!--counter)
            std::cout << "Buy\n";
    }
};
 
size_t Alfa::counter = 0;
 
int main()
{
    Alfa a;
    std::cout << "****\n";
    {
        Alfa b, c(a), d = b;
    }
    std::cout << "----\n";
}
0
735 / 339 / 71
Регистрация: 10.06.2014
Сообщений: 2,356
14.03.2017, 15:23 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
#include <iostream>
 
struct Alfa
{
    static int counter;
    Alfa()
    {
        if (counter == 0) {
            std::cout << "Cоздан первый экземпляр класса Alfa" << std::endl;
        }
        ++counter;
    }
    
    ~Alfa()
    {
        --counter;
        if (counter == 0) {
            std::cout << "Уничтожен последний экземпляр класса Alfa";
        }
    }
   
};
 
int Alfa::counter = 0;
 
int main()
{
    Alfa a1;
    Alfa a2;
    Alfa a3;
}
0
Форумчанин
Эксперт CЭксперт С++
8159 / 5007 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
14.03.2017, 15:41 4
sys_beginner,
C++
1
2
3
4
5
6
7
8
int main()
{
    Alfa a1;
    {
        Alfa a2(a1);
    }
    std::cout << "\n***";
}
0
735 / 339 / 71
Регистрация: 10.06.2014
Сообщений: 2,356
14.03.2017, 15:48 5
MrGluck,
Я просто старался как можно проще
У вас конечно же больше случаев предусмотрено
0
Форумчанин
Эксперт CЭксперт С++
8159 / 5007 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
14.03.2017, 15:53 6
Цитата Сообщение от sys_beginner Посмотреть сообщение
Я просто старался как можно проще
Упрощать стоит до тех пор, пока это не перестаёт быть корректным. Ваш код содержит потенциальную ошибку.

Добавлено через 2 минуты
Кстати, можно чуток упростить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Alfa
{
    static size_t counter;
public:
    Alfa()
    {
        if (!counter++)
            std::cout << "Hello\n";
    }
    Alfa(const Alfa &) { counter++; }
    ~Alfa()
    {
        if (!--counter)
            std::cout << "Buy\n";
    }
};
0
735 / 339 / 71
Регистрация: 10.06.2014
Сообщений: 2,356
14.03.2017, 15:56 7
Цитата Сообщение от MrGluck Посмотреть сообщение
Упрощать стоит до тех пор, пока это не перестаёт быть корректным. Ваш код содержит потенциальную ошибку.
Когда я писал этот код - пытался показать ТС как вообще такие вещи делаются
Но то что вы перфекционист конечно же хорошо))
0
Форумчанин
Эксперт CЭксперт С++
8159 / 5007 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
14.03.2017, 15:59 8
Цитата Сообщение от sys_beginner Посмотреть сообщение
Когда я писал этот код - пытался показать ТС как вообще такие вещи делаются
Коли взялся за гуж, не говори, что не дюж
Заметьте, что разница лишь в одной строчке
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
Alfa(const Alfa &) { counter++; }
0
735 / 339 / 71
Регистрация: 10.06.2014
Сообщений: 2,356
14.03.2017, 16:11 9
MrGluck,
В целом я с вами согласен

Добавлено через 2 минуты
MrGluck,
А почему вы не определили оператор = ?
Там же тоже создается экземпляр
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2017, 16:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Реализовать произвольный пользовательский класс с функциями-членами Put и Show
Создать несколько обьектов. Написать функции: 1) для ввода данных по обьекту(как Put) 2) для...

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

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

Нужен класс со статическими функциями
кому не сложно киньте несколько кодов для C# нужен класс со статическими функциями зарание спасибо


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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