其可以在运行阶段进行决策(比如有的调用需要根据输入类型决定,) StarPool决定调用哪一个函数,相应地则需要跟踪基类指针或者引用指向对象的类型,这将增加开销.
对比说明:动态联编可以运行时选择特定的方法,比较灵活;但缺点是开销较大.根据c++的指导原则:不要为不使用的特性付出代价(实践,空间),因而关于动态联编虚函数,根据需要决定.我们可以看到,最后一个输出是出乎我们逻辑上的预料的,其实这正是静态联编的结果,该非虚函数在编译时就已经根据其引用的类型决定了将使用基类中的相应函数,输出结果,而没有根据其地址指向的类型决定调用哪个函数,这时便需要我们在执行时再决定调用.
可以根据实际所指的对象调用相应的析构函数,先释放派生类对应的空间,后会调用基类析构函数(此为编译器所规定),若不申明为虚函数,由(www.starpool.cn )中说明就知道,由于是静态联编,将只会调用基类的析构函数,则派生内相应的内存将不被释放,造成内存泄露.