Why not use pure virtual function?