······
纯虚函数为什么不能被实例化,以及其内部机制到底是怎么运行的,这个问题一直困扰我。
下面我们给与解释:
······
virtual void x() = 0;
这句,等于告诉编译器在VTABLE中为函数保留一个间隔,但在这个特定间隔中不放地址。只要有一个函数在类中被声明为纯虚函数,则VTABLE就是不完全的
这样当某人试图创建这个类时,编译器会由于不能安全的创建一个纯抽象类的对象
而发出一个出错信息,这样编译器就可以保证抽象类的纯洁性,不会被误用
······
参考《C++编程思想》 14章:多态和虚函数
······