Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Класс STC.

Posted on 14 апреля, 201314 апреля, 2013 by admin

Обобщите класс STC параграф 14.6.3.1 до шаблона, который использует стратегию «получение ресурса есть инициализация» для хранения и восстановления функций разных типов.

Задачки как всегда не понятные, да я уже месяц как читал про исключения. Ну да ладно надо как не будь пытаться делать. Короче пошол читать.

Так код самого класса STC из 14.6:

 

1
2
3
4
5
6
7
class STC
{
unexpected_handler old;
public:
STC(unexpected_handler f){old=set_unexpected(f);}
~STC() {set_unexpected(old);}
};

Вообщем там отакая от фигня написана.

Я создал свой пример решения шаблон:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//klacc STC
#include <iostream>
using std::cout;
using std::endl;
 
template<class T>
class STC //klacc dl9 xraneni9 i voctanovleni9
{
T old;
public:
STC(T f){old=set_unexpected(f);}
~STC() {set_unexpected(old);}
T set_unexpected(T a){}
};
 
int main()
{
return 0;
}

Поговорим немного о стратегии «выделение ресурса есть инициализация». Это одна из концепции ООП, суть которой в конструкторе захватывать ресурсы, а в деструкторе их освобождать. Отакая от концепция. Как мы видим в классе функция set_unexpected видимо захватывает ресурс, а деструкторе функция set_unexpected видимо освобождает память.

Я не сильно пока в этих вопросах разбираюсь и считаю, что память можно захватить с помощью токо new, а освободить с помощью delete, но в данном примере мы не new ни delete не видим так, что не известно, что это за захват и что это за освобождение. Да скорее всего нету не какого захвата, есть но он постоянный равен весу самой переменной.

Еще считается, что стратегия «выделение ресурса есть инициализация» хорошо использовать при исключениях, но я честно не знаю посмотрим дальше. Ну видимо и хорошо, потому, что при генерации исключения из класса видимо и деструктор автоматически будет вызываться и если он не удалит (освободит) ресурсы, то они будут потеряны для системы. Ладно поживем увидим на практике как оно все работает.

[youtube]http://www.youtube.com/watch?v=peH9N9rW500[/youtube]

2 thoughts on “Класс STC.”

  1. Maxim:
    12 июля, 2013 в 09:00

    думаю Страусструп имел ввиду :

    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
    ; html-script: false ]
    template
    class STC // класс для хранения и восстановления
    {
        F* old;
        F*& func_int;
    public:
        STC (F*& func, const F * const f):func_int(func), old(func) {func=f;}
        ~STC () { func_int=old;}
    };
     
    void f1()
    {
        int gg=0;
        gg++;
    }
     
    void f2()
    {
        int gg=0;
        gg++;
    }
     
    typedef void ( f_t) ();
     
    f_t *f_p;
     
    void testedFunc()
    {
        STC t_stc(f_p, f2);
        f_p();
    }
     
    void testSTC()
    {
        f_p = f1;
        testedFunc();
        f_p();
    }

    Ответить
    1. Maxim:
      12 июля, 2013 в 09:03

      тип темплейта не пропечатался

      Ответить

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • uncategorized (3)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (37)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • JasonReant к записи Создание и использование статических библиотек .lib в visual studio.
  • MyWin2020 к записи Программка для заполнения форума на vBulletin 3.8.7
  • ScottJip к записи Создание и использование статических библиотек .lib в visual studio.
  • ArnoldKig к записи Создание и использование статических библиотек .lib в visual studio.
©2021 Kselax.ru Theme by ThemeGiant