【发布时间】:2021-04-30 17:54:40
【问题描述】:
如果基类中的成员函数是虚函数并且在派生类中被覆盖,有没有办法在基类中创建一个指针?
考虑如下代码
#include <iostream>
#include <functional>
struct Base
{
virtual void g() const
{
std::cout << "Base" << std::endl;
}
};
struct Derived : Base
{
virtual void g() const override
{
std::cout << "Derived" << std::endl;
}
};
int main()
{
Derived d;
(d.*(&Base::g))();
std::mem_fn(&Base::g)(d);
return 0;
}
尽管我在 Base::g 上做了一个指针,它还是打印了两次“Derived”。有没有办法让函数 g 保持虚拟和被覆盖,并获取将为 d 打印“Base”的成员函数指针?
【问题讨论】:
标签: c++ pointers polymorphism pointer-to-member