我们知道C不允许在类中模板化虚
函数.任何人都明白为什么会有这种限
简短回答:虚拟
函数是在运行时,当从已编译的候选
函数集中选择
函数时,不知道是谁
调用了谁.
函数模板OTOH是关于在编译时从
调用者端创建任意
数量的不同
函数(使用在编写被
调用者时可能都不知道的类型).那只是不匹配.
更长的答案:虚函数是使用额外的间接(程序员的通用多用途治疗)实现的,通常实现为函数指针表(所谓的虚函数表,通常缩写为“vtable”).如果您正在调用虚函数,则运行时系统将从表中选择正确的函数.如果存在虚函数模板,则运行时系统必须使用确切的模板参数查找已编译的模板实例的地址.由于类的设计者无法提供从无限的可能参数集创建的任意数量的函数模板实例,因此这不起作用.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。