纯虚函数(当我们设置= 0
) 也可以有一个函数体。
如果纯虚函数根本不会被调用,那么为它们提供函数体有什么用呢?
您认为无法调用纯虚函数的假设是绝对错误的。当一个函数被声明为纯虚函数时,它仅仅意味着该函数无法被调用动态地,通过虚拟调度机制。然而,这个完全相同的函数可以很容易地被调用静态地, 非虚拟的, directly(没有虚拟调度)。
在 C++ 语言中,当调用中使用函数的限定名称时,即当调用中指定的函数名称具有<class name>::<function name>
form.
例如
struct S
{
virtual void foo() = 0;
};
void S::foo()
{
// body for pure virtual function `S::foo`
}
struct D : S
{
void foo()
{
S::foo();
// Non-virtual call to `S::foo` from derived class
this->S::foo();
// Alternative syntax to perform the same non-virtual call
// to `S::foo` from derived class
}
};
int main()
{
D d;
d.S::foo();
// Another non-virtual call to `S::foo`
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)