今天看书,书上有一句这样的话。
派生类中对于要重写基类中的虚函数的声明必须完全一直,唯一的例外是:基类中的虚函数是返回基类对象的指针或者引用,那么派生类中的那个虚函数我们不仅仅可以返回基类对象的指针或函数,而且还可以返回派生类对象的指针或引用。
为了验证C++是否对虚函数的声明是否要求严格。我特地做了如下测试
基类定一个const版的虚函数。派生类定义了一个和基类完全一样的函数,但是去除了const。
使用静态的或非静态的指向基类的指针指向这2个对象,调用成员函数;发现调用的始终是基类的版本。
得出结论:
C++对于虚函数声明的一致性要求确实严格
以下是我的测试代码