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

被折叠的 条评论
为什么被折叠?



