Когсуэлл Джефф
Шрифт:
Существует множество ситуаций, когда требуется, чтобы у класса существовал только один экземпляр. Для этой цели служит шаблон
Когда принимается решение, что требуется только один экземпляр чего-либо, то на ум сразу должно приходить ключевое слово
Чтобы клиентский код ничего про нее не знал, сделайте ее
Чтобы запретить клиентам создавать экземпляры этого класса, сделайте конструкторы
Таким образом, если кто-то попробует создать в куче или стеке новый singleton-класс, то он получит дружественную ошибку компилятора.
Теперь, когда статическая переменная для хранения единственного объекта
Посмотрите, как это работает. Если указатель
И если вы не хотите, чтобы клиенты работали с указателями, то можно возвращать ссылку.
Важно здесь то, что в обоих случаях клиентам запрещено создавать экземпляры объекта
Рецепт 8.3.
8.10. Создание интерфейса с помощью абстрактного базового класса
Требуется определить интерфейс, который будет реализовываться производными классами, но концепция этого интерфейса является абстракцией и не должна наследоваться сама по себе.
Создайте абстрактный класс, который определяет интерфейс, объявляя, по крайней мере, одну из своих функций как чисто виртуальную (
Пример 8.10. Использование абстрактного базового класса