父类构造和析构函数一定是virtual吗