C++中虚函数的返回类型问题

在学习多态的时候,我学习到“子类虚函数的返回类型要跟父类相同,或者是父类返回类型的子类” 如果子类虚函数返回指针或引用是可以的,但是不能返回子类对象的类型,这里我就没有理解为什么,ls当时说的是虚函数需要用指针或引用调用才能实现多态、upcast,我去网上搜索的时候发现在override的条件中也有返回类型得是指针或引用的条件,但是我想知道知道这个问题的原理,想了解为什么子类虚函数返回子类对象的类型就不可以。