// Client.cpp #include "IComponent.h" #include "IComponentFactory.h" #include int main() { Logger logger; // for client logger.log("\n Demonstrate Reference Counted Components"); logger.log("\n =========================================="); IComponent::doLog(); // for all components logger.log("\n -- creating original component --"); IComponent* pComp1 = IComponentFactory::create(); pComp1->operation(); logger.log("\n -- creating a new instance of component --"); IComponent* pComp2 = IComponentFactory::create(); pComp2->operation(); logger.log("\n -- making alias of the new component --"); IComponent* pComp3 = pComp2->alias(); logger.log("\n -- releasing original component --"); pComp1->release(); logger.log("\n -- releasing new component --"); pComp2->release(); logger.log("\n -- releasing alias of new component --"); pComp3->release(); std::cout << "\n\n"; }