参考博客:https://www.cnblogs.com/larry-xia/p/10325643.html
在实际过程中,用到了dynamic_cast:
GTreeNode<T>* root() const{
return dynamic_cast<GTreeNode<T>*>(this->m_root); //复习一下强制类型转换的问题
}
返回的tjis->m_root 实际上是基类的成员 ,但是返回值的类型是子类的类型;所以这里用到了动态类型转换;