使用虚函数的时候,总是有一种“就是因为参数匹配不严格,才不得不应用虚函数”的感觉。
看了好多例子,还是不觉得虚函数是一个便利的特性,反而觉得是因为以前遗留的问题才不得不打出虚函数这个补丁。
在个人编码的时候,也倾向于使用重载函数或是传入函数指针的方式来规避这个问题。
目前发现的虚函数的实用之处有一个:
对于大量相似的派生类,可以方便的利用虚函数实现类似于重载函数的功能。参见:虚函数作用--知乎
在stackoverflow上也有这样一个例子:Why Do We Need Virtual Method?
在这个例子里,因为函数传参已经限定了一个类型,而传入的是另一个类型,我们却还期望调传入不匹配的参数却能传出匹配的结果,总觉得有一些怪异。
目前对于C++处于一种入门一点越学越不会用的状态,暂且将自己的疑问记录在此,以后理解透彻后再来补充。