
Чем так хорош язык C++? Конечно, возможностью перегрузки операторов для своего класса! Ну ладно, разумеется, не только этим, но это классная возможность, разве нет? Давайте поговорим о перегрузке логических операторов, стоит ли это делать и чем это грозит (кроме непонятного кода в результате).
Предположим, вам требуется написать разделяемую библиотеку (DLL в терминологии Windows и shared library в мире *nix). Допустим, в библиотеке реализована некоторая фабричная функция, которая создаёт очень полезные для пользователей объекты. 

Все, кто хоть раз восхищался нововведениями стандарта C++11 (давно это было, но восхищаться можно бесконечно), знают о существовании интеллектуальных указателей, которые позволяют не беспокоиться о корректной очистке памяти. 
