c++ - 我是否需要使用继承对象(相对于基础对象)来覆盖我的虚函数?

标签 c++ pointers inheritance public

假设我有一个基 class Base 和两个派生类 Derived: public BaseDerived2: public Base。 我有一个纯虚函数

virtual int CompareByInsertKey( Base* item_in_list ) = 0;

在类 Base 中。所以它是一个函数,它接受一个指向 Base 类的指针。

我希望我的类 Derived 覆盖此虚函数,但我希望它采用指向 Derived 类的指针作为参数。 我还希望我的类 Derived2 覆盖此函数,但我想将指向 Derived2 类的指针作为参数。 如果我将参数保留为 Base* item_in_list 是否会自动执行此操作,因为 DerivedDerived2Base 类的一部分? 如果没有,我该怎么做?

谢谢,如果您需要我发布更多信息,请发表评论。

最佳答案

它自动获取指向派生类的指针,因为 Derived * 可以隐式转换为 Base *。不过,您必须在函数参数中使用 Base 来实现它,以便重写该函数。

virtual int CompareByInsertKey( Base* item_in_list ) override
{
    Derived *ptr = dynamic_cast<Derived *>(item_in_list);
    // ...
}

关于c++ - 我是否需要使用继承对象(相对于基础对象)来覆盖我的虚函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25334517/

相关文章:

java - 函数调用自身但不循环

c++ - 构造函数的调用顺序

c - C 中的 write() 函数有问题

c++ - 如何读取指向指针C++的指针?

java - 一般应用枚举成员或方法

javascript - Backbone Marionette : put methods on instance/constructor or prototype when extending objects

c++ - 对象数组融合的通用函数

c++ - 在这种情况下如何包含所有 .cpp 和头文件?

c++ - 将类集枚举更改为非类集枚举

c - 数组和指针的类比