什么是静态多态?它与重载有何区别?

来源:百度知道 编辑: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