今天研究BVH的构造过程的时候遇到了这样的一行代码:
这里的hittable_list和bvh_node的继承自同一个基类hittable,然后他们有共同的虚函数hit。说实话这一行代码给我看的有点懵,不知道怎么完成的转换,于是自己实验了一下:
我用三个类模拟了一下上述语句的大致做法,结果发现需要一个从hittable到Bhitable的构造函数
于是:
扫盲了。
如果两个子类之间做转换,转换的步骤应该是:
子类A->父类->子类B,是一个三角的上下行转换关系。但是在这样转换的时候却必须要子类B提供含基类参数的构造函数,因此这里应该是发生了一次隐式转换。
最后测试可以发现,A类转换成B类之后,调用的虚函数就变成了B类的虚函数,而不会再去调用A类的虚函数。