【发布时间】:2020-09-07 10:37:33
【问题描述】:
考虑下面的例子
#include <iostream>
#include <string>
class A
{
public:
virtual void foo() { std::cout<< "FOO A\n"; }
private:
void bar() { std::cout<< "BAR A\n"; }
virtual void vbar() { std::cout<< "VBAR A\n"; }
};
class B : public A
{
public:
void foo() { std::cout<< "FOO B\n"; bar(); vbar(); }
private:
void bar() { std::cout<< "BAR B\n"; }
virtual void vbar() { std::cout<< "VBAR B\n"; }
};
int main()
{
A* b = new B();
b->foo();
}
输出会给我们
FOO B
BAR B
VBAR B
由于我首先想到了它的简单示例,因此我无法弄清楚任何私有虚拟方法用例。在公共虚拟方法的情况下,基指针类接口将适应其定义的 vtable,但就像给定的私有虚拟示例一样,这无关紧要
【问题讨论】:
-
这能回答你的问题吗? Private virtual method in C++
标签: c++ virtual-functions