如果被转类型里面有虚函数,强转的指针是不能Call这个虚函数的。
即便这个虚函数有实现,也会被认为是地址是0的函数。不是强转的指针就没有这个现象。详细说明如下:
例如有下面两个类,他们之间是继承关系。
如果有如下的调用,将会发生访问例外:
原因个人认为,是因为强转的情况,虚函数表无法强转为子类的虚表,所以调用子类的虚函数,只能得到地址为0的函数。
但是如果InitPanel这个函数不定义为虚函数,那么也就和虚表没有什么关系了,也就可以正常调用了。
如果被转类型里面有虚函数,强转的指针是不能Call这个虚函数的。
即便这个虚函数有实现,也会被认为是地址是0的函数。不是强转的指针就没有这个现象。详细说明如下:
例如有下面两个类,他们之间是继承关系。
如果有如下的调用,将会发生访问例外:
原因个人认为,是因为强转的情况,虚函数表无法强转为子类的虚表,所以调用子类的虚函数,只能得到地址为0的函数。
但是如果InitPanel这个函数不定义为虚函数,那么也就和虚表没有什么关系了,也就可以正常调用了。