add virtual function demo