当我有这样的事情时:
class A
{
virtual void rat();
};
class B : public A
{
virtual void rat() { ; } //implemented!
};
int main(int argc, char **argv)
{
A *a = new B;
delete a;
}
我收到链接器错误:
除非我把基础老鼠变成纯虚拟的。
但是,当我有这个时:
class A
{
public:
void rat();
};
int main(int argc, char **argv)
{
A a;
}
这编译得很好并且不会给我一个未定义的参考链接错误,除非我明确地尝试在我的 main ( a.rat();
) 中调用 rat 函数。然而,在派生类中实现的未实现的基类虚函数的规则是什么,就像在第一个失败的代码片段中一样?