对于执行为虚拟的函数,在任意派生类和基类中声明和定义它时,必须要有相同的名称和参数列表。而且,如果把基类的函数声明为const,就必须把派生类函数也声明为const。一般情况下,函数在派生类中的返回类型也必须与基类中的相同,但当基类中的返回类型是类类型的指针或引用时例外,在这种情况下,虚函数的派生类版本可以返回更特殊的类型的指针或引用。这种返回类型使用的技术术语是”协变性“。
虚函数的定义规则是,如果要在派生类中对虚函数使用与基类不同的参数,虚函数机制就不起作用。此时,派生类中的函数会利用在编译期间建立固定的静态绑定。