C ++中的伪虚函数是什么?
答案 0 :(得分:4)
AFAIK它不是任何具有官方定义的术语。
也许有人在谈论simulated dynamic binding?
编辑:一个快速的网络搜索表明有人可能已经实现了他们自己的动态多态,所以他们可能有自己的vtable。 “伪虚拟”函数将是通过其机制访问的函数,而不是实际上是它们的C ++编译器理解它们的虚函数。
这样做的一个原因是实施multi-dispatch。
你有什么背景可以指出我们吗?
答案 1 :(得分:2)
我从未听过这个词。我猜他们要么在讨论Non-Virtual Interface idiom (NVI),要么他们正在讨论构建函数指针的调度表,这就是如何在C中实现多态/虚函数(实际上是C ++编译器的工作方式)它在幕后)。
答案 2 :(得分:1)
我听过用于引用多方法的术语(在C ++中,这些通常使用函数指针数组实现,其中选择器偏移量由代码在运行时确定):
(*multiMethod[ index ])()
multiMethod数组只是一个函数指针数组。
答案 3 :(得分:0)
带声明的虚拟函数。
class Foo
{
int* bar;
Foo() : bar(0) { bar = new int; }
virtual ~Foo() { delete bar; }
}
这有一个伪虚拟析构函数,因为它在声明中做了一些事情。这是一个纯虚拟声明:
class Foo
{
Foo() { }
virtual ~Foo()=0;
}
至少,这就是我学习它的方式。