解决方法
核心的多态性是关于多个事物,它们都具有一定的一致性行为,这样您可以在特定的算法或过程中替换另一种.只要它们都提供预期的界面,该过程仍然可行.
重载并不是真的有这样的基础.只要命名两个或多个具有相同名称的函数,只要它们具有不同的参数列表即可.编译器根据您传递的参数的类型,确定您实际使用的功能.
现在可以使用重载来创建多态.考虑以下几点:
template<typename T> void func(T t) {call(t);}
这将调用call,将t作为参数.只要你提供一个类型T,其中call(t)是合法的C代码,这将工作.您可以通过重载函数调用来处理您使用func感兴趣的任何类型:
void call(int); void call(float); void call(vector<int>);
以这种方式,func是一个相对于其参数是多态(静态)的函数.它可以在任何类型上执行其操作,只要该类型具有适当的接口即可.该接口是使用该类型的变量调用函数调用的能力.
func(5); //Legal func(13.4); //Legal func(vector<int>{4,3,2,1}); //Legal func(vector<float>{}); //NOT legal
原文地址:https://www.jb51.cc/c/110539.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。