C++静态构实现多态
#include <常用>
元<类 M>构 A{
空 f(){M::g();}
};
构 C{
单 串 首,尾;
静 空 切换(串&a,串&b){首=a;尾=b;}
静 空 g(){
打印(首,尾);
}
};
空 ff(){
串 a{"ab"},b{"cde"};
C c;c.切换(a,b);
A<C>e;e.f();
}
空 gg(){
串 a{"啊啊"},b{"哈哈"};
C c;c.切换(a,b);
A<C>e;e.f();
}
空 主(){
ff();gg();
}
这里的多态是两个层级.
1,是A<C>中C模板的多态!
2,是C.切换(a,b)引起的多态!
静态构是可以实现静态和动态两种层级的多态.
当然,上面只是针对单线程.
如果是多线程,可以通过给静态类加上数量与类型来凭空区别不同类.如:
元<整 I,类 T>构 C{
...内容不变...
};//可以借助`整数I,T类型`实现`静成员`的唯一性.
这样,就不是同一个静态构在单线程的不同时刻工作,而是多线程可用不同静态构单独的工作,因而是非常不错的.相当于前者是单线程版.后者是多线程版.
浙公网安备 33010602011771号