模板当中的多态浅谈

#include <iostream>
using namespace std;

//模板中的多态不需要父类
class A
{
    
    
public:
    void fun()
    {
    
    
        cout << "A::fun!" << endl;
    }
};

class B
{
    
    
public:
    void fun()
    {
    
    
        cout << "B::fun!" << endl;
    }
};

//函数模板
template<typename T>
 void Tmpl(T& obj)
{
    
    
    obj.fun();//传递进来的类型只要有fun函数,都可以这么干
}

int main()
{
    
    
    //模板中的多态,并不需要用到父类以及继承的概念,子类也不需要虚函数
    //(压根就不存在父类指针指向子类对象或者父类引用绑定子类对象这种概念)
    //编译期间内,编译器会实例化出eatTmpl<Men>和eatTmpl<Women>这两个函数。
    //总结:
    //模板多态:也叫静态多态,编译期间就确定了具体调用谁,不存在执行期间的性能问题

    A a;
    B b;

    Tmpl(a);
    Tmpl(b);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_38158479/article/details/121420786