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

被折叠的 条评论
为什么被折叠?



