«Ведущие указатели», «Гениальные указатели», «Грани», «Кристаллы» — в общем, хватает всякого добра. Правда, в практичности этих поделок можно усомниться, несмотря на их «изящество». То есть, конечно, они полезны, но не являются, своего рода, панацеей (кроме «ведущих» указателей).
В общем особую роль играют только «ведущие» и «умные» указатели.
Начнем с такого класса как Countable, который будет отвечать за подсчет чего либо.
Итак он выглядит примерно так (в дальнейшем будем опускать реализации многих функций из за их тривиальности, оставляя, тем самым, только их объявления:
class Countable
{
private:
int count; public:
int increment (); int decrement ();
};
Здесь особо нечего говорить, кроме того, что, как всегда, этот класс можно сделать более «удобным», добавив такие вещи, как поддержку режима многопоточности и т.д.
Следующий простой класс прямо вытекает из многопоточности и осуществляет поддержку этого режима для своих детей:
class Lockable
{
public:
void lock(); void unlock(); bool islocked();
};
Этот класс не вносит никакой новизны, но стандартизует поддержку многопоточности при использовании, например, различных платформ.