c++ implemntiom