前端之家收集整理的这篇文章主要介绍了
c – 调用派生的基类函数,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法从虚
函数调用基类
方法作为派生类,而不是作为基类?
示例
代码:
class A
{
public:
virtual void a() = 0;
void print() { std::cerr << typeid(decltype(*this)).name(); };
};
class B : public A
{
public:
virtual void a() { print(); }
};
int main()
{
B b;
b.a(); //prints 1A,I want it to print 1B,is it even possible?
}
只需
删除decltype:
void print() { std::cerr << typeid(*this).name(); };
这总是指向其成员函数所在的类的实例.这里面的A总是A *.所以typeid(decltype(* this))总能给你A.
另一方面,typeid(* this)将查找运行时类型信息,这将确定这实际上是B(因为A是多态类型).
原文链接:https://www.f2er.com/c/119330.html