example of work with c++ abstraction