近期突然自己想到了一个问题:如果我现在有一个基类,它有很多个子类。同时现在又有一个基类指针,它指向一个子类,但是我不知道其具体是哪一个子类,所以如果我想知道它实际指向哪个子类在java中可以有instanceof可以实现,而在C++中怎么实现呢?
后来我想了一段时间,终于想明白了,在C++中如果想在运行而不是在编译的过程中获得对象的具体的类型,那么就必须要用到虚函数。其实虚函数的出现就可以理解为需要在运行的时候知道对象的具体类型,反之亦然。既然用到了虚函数,那么就可以实用dynamic_cast<>()函数来判断指针或者引用的具体类类型了,于是我下了下面的代码作为例子,其类的关系如图: