about virtual class and virtual function