条款41:了解隐式接口和编译期多态

来源:互联网 发布:葫芦娃 知乎 编辑:程序博客网 时间:2024/05/13 05:35
/*条款41:了解隐式接口和编译期多态*/// 重载函数(编译期多态)虚函数绑定(运行期多态)//类和模板都支持接口和多态,对于类而言接口是显式的,以函数签名为中心,多态则是通过虚函数发生于生运行期//                          对于模板而言接口是隐式的,奠基于有效表达式,多态则是通过模板卡具现化和函数重载解析发生于编译期#include<iostream>using namespace std;class Widget {public:Widget();virtual ~Widget();virtual size_t size()const;virtual void normalize();void swap(Widget&other);};//范例一void doProcessing(Widget&w) {// w必须支持widget接口  显式接口if (w.size()/*多态:运行时决定调用哪个虚函数*/ > 10 && w != someNastyWidget) {Widget temp(w);temp.normalize();temp.swap(w);}}//范例二template<typename T>void doProcessing(T&w) {//这里的w必须支持size,normalize swap成员函数,拷贝构造函数(建立temp)不等比较 相当于隐式接口implicit,这里的以不同的template参数具现化函数模板,会导致调用不同的函数,这就是所谓的编译期多态if (w.size() > 10 && w != someNastyWidget) {T temp(w);temp.normalize();temp.swap(w);}}int main() {}

0 0
原创粉丝点击