派生类中虚函数原型的是类的一種特殊成员函数主要是为实现C++的多态特性引入。 派生类中虚函数原型的之所以“虚”是因为调用的派生类中虚函数原型的不是在静态编譯(静态编联)时确定而是在运行时通过动态编联确定的。 多态核心理念即是通过基类访问派生的子类通常情况是借助基类指针来访問派生类对象。 1)析构函数通常声明为派生类中虚函数原型的这样在有继承场合,可以做到基于对象类型动态调用正确对象类型的析构函数完成相应的对象析构。 2)友元函数不是成员函数只有成员函数才能是派生类中虚函数原型的,所以友元函数不能是派生类中虚函數原型的;但是友元函数可以通过调用成员派生类中虚函数原型的达到虚拟化效果 3)通过派生类中虚函数原型的可以实现多态灵活,但是派生类中虚函数原型的也有缺点如占用更多内存(虚表)运行效率低(需要查找虚表找到正确函数)。 4)通常普通函数(非成员函数)囷类中不能继承(只属于本类)的函数(构造函数/static成员函数/inline成员函数/友元函数)不能声明为派生类中虚函数原型的;不能声明为派生类中虚函数原型的的函数共同点基本都是静态编联而派生类中虚函数原型的要靠动态编联机制才能起作用。 纯派生类中虚函数原型的是一种特殊的派生类中虚函数原型的通常定义在基类中。纯派生类中虚函数原型的在基类中定义方法是在函数声明末尾加“=0”如 virtual func(int, int) = 0 纯派苼类中虚函数原型的的“纯”体现为基类不需要实现它,其主要作用是为派生类定义函数接口框架由派生类完成纯派生类中虚函数原型嘚的实现。 如果一个类包含有纯派生类中虚函数原型的则该类称为抽象类。 抽象类一般只能是基类其声明的纯派生类中虚函数原型的甴派生类实现。如果派生类没有重写(覆盖)抽象类的纯派生类中虚函数原型的则派生类也是抽象类 对象不能基于抽象类创建,必须基於派生出来的具体类创建对象