虚函数才是动态绑定,在运行时根据指针指向的对象的实际类型,决定调用的函数。
引用和指针是一样的,对于非虚拟函数,都是静态绑定。
一个“非虚拟”函数就意味着,某个类体系都要有这样一个共同的行为,所以在设计上重定义非虚拟函数也是错误的,会误导客户。
Item 7说过,多态的dtor也要虚拟,和本文是一样的道理,都是不希望函数被静态绑定。
虚函数才是动态绑定,在运行时根据指针指向的对象的实际类型,决定调用的函数。
引用和指针是一样的,对于非虚拟函数,都是静态绑定。
一个“非虚拟”函数就意味着,某个类体系都要有这样一个共同的行为,所以在设计上重定义非虚拟函数也是错误的,会误导客户。
Item 7说过,多态的dtor也要虚拟,和本文是一样的道理,都是不希望函数被静态绑定。