考虑以下 :
class Abstract
{
public:
virtual void func() = 0;
};
int main() {
Abstract abs1; // doesn't compile
Abstract * abs2 = new Abstract(); // doesn't compile
Abstract * abs3; // compiles
return 0;
}
请注意我没有实现func()
,那么为什么可以Abstract * abs3;
在我们有纯虚方法和抽象类的地方做呢?我知道如果我尝试执行 abs3->func(); 会出现运行时错误;,但是,我仍然不清楚为什么 C++ 允许编译该代码......?
谢谢,罗恩