什么是静态多态?它与重载有何区别?
来源:百度知道 编辑:UC知道 时间:2024/05/10 17:57:09
静态多态是使用模版类技巧,实现的一个类似与动态多态的功能的技术。它的一个好处是避免虚函数查找带来的效率问题,缺点是还是不如动态多态强大!
下面是例子
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
template <typename Der>
class Base
{
public:
Der & Ref(void){ return static_cast<Der&>(*this); }
Der * operator ->(void){ return static_cast<Der*>(this); }
static Der & CreateObjectRef(){ Der *p = new Der; return *p; }
static void DeleteObjectRef(Base<Der> &p){ delete &p; }
const Der* ClassID() { return (static_cast<Der*>(this)); }
};
class Derive : public Base<Derive>
{
public:
void Show(){ cout<<"hi derive"<<endl; }
};
template<typename T>
void Print(Base<T> &b)
{
b.Ref().Show();
b->Show();
}
class Three
{
public:
template<typename T>
voi