`

动静多态

阅读更多
由于继承||虚函数在运行期进程处理,这种多态叫动多态。
模板允许我们使用单一的泛型标记,来关联不同的特定行为:但这种关联是在编译期进行处理的,这些借助于模板的多态称为静多态
#include<iostream>
using namespace std;

class A{
public:
    virtual void fun()=0;
};

class A1:public A{
public:
    void fun(){
        cout << "A1()" << endl;
    }
    int size()const{
        return 10;
    }
};

class A2:public A{
public:
    void fun(){
        cout << "A2()" << endl;
    }
    int size()const{
        return 5;
    }
};

template<typename A>
void myFun(A t)
{
    t.fun();//根据对象的类型调用相应的fun()
}

//静多态
template<typename Aa1,typename Aa2>
int distance(const Aa1& a1,const Aa2& a2)
{
    int sa = a1.size();
    int sb = a2.size();
    return sa-sb;
}

int main(){
    A1 a1;
    A2 a2;
    myFun(a1);
    myFun(a2);
    cout << distance(a1,a2);
}

A1()
A2()
5


通过继承实现的多态是绑定的和动态的。
通过模板实现的多态是非绑定的和静态的。
绑定与非绑定的区别是接口是否有预先确定,动静态:一个是运行期绑定一个是编译期
分享到:
评论

相关推荐

    java的编译时多态和运行时多态

    Java 编译时多态和运行时多态 Java 编译时多态和运行时多态是 Java 语言中两个重要的概念,它们都是多态性的实现方式,但它们在实现机制和应用场景上有所不同。 编译时多态 编译时多态是指在编译期根据参数列表的...

    labview创建多态VI

    创建多态VI在LabVIEW中的实现主要依赖于函数选板(Function Palette)上的数据类型结构(Data Type Structure)。下面将详细介绍如何在LabVIEW中创建和使用多态VI。 1. **定义多态VI的基本结构** 在LabVIEW中,一...

    一个HW 多态题目 一个HW 多态题目

    接着,我们来看多态的两种主要形式:编译时多态和运行时多态。编译时多态通常通过函数重载和运算符重载实现,编译器在编译阶段就能确定调用哪个函数。而运行时多态则是在程序运行时才决定调用哪个函数,这是通过虚...

    多态代码实例

    在编程领域,多态(Polymorphism)是一个关键概念,尤其在面向对象编程中发挥着重要作用。多态允许我们使用一个通用的接口来处理不同类型的对象,提供了代码的灵活性和可扩展性。虚函数(Virtual Function)是实现...

    Java 多态应用,掌握多态

    多态分为编译时多态和运行时多态。编译时多态主要通过方法的重载(Overloading)实现,即在同一个类中定义多个同名但参数列表不同的方法。而运行时多态则是通过方法的重写(Overriding)和接口实现实现,它依赖于...

    多态的练习案例

    在编程领域,多态(Polymorphism)是面向对象编程中的一个重要概念,它允许我们用一个接口处理多种不同的数据类型。多态性使得程序更加灵活,可扩展性更强,能够提高代码的重用率。本练习案例将深入探讨多态的常见...

    java多态的总结

    在Java中,多态分为编译时多态和运行时多态。编译时多态主要体现在方法的重载(Overloading),即在同一个类中可以有多个同名方法,但参数列表不同。编译器会根据传入参数的类型和数量来决定调用哪个方法。运行时...

    java多态小结

    ### Java多态详解 #### 什么是多态? 多态(Polymorphism)是面向对象编程的一个核心特性,指的是一个接口可以被多个类所实现或一个类可以被多个类所继承,进而表现出不同的行为。在Java中,多态主要体现在两个...

    原来多态还可以这样

    这主要体现在两个方面:静态多态(编译时多态)和动态多态(运行时多态)。静态多态通常通过函数重载或运算符重载实现,而动态多态则依赖于接口、继承和虚函数等机制。 1. 静态多态:在编译期间就能确定调用哪个...

    Java多态的讲解

    Java多态的讲解

    基于C++的多态模式编写类的代码多态.docx

    在C++中,多态(Polymorphism)是面向对象编程的一个核心概念,它允许我们使用一个接口来表示多种不同的类型。多态性使得代码更加灵活,可扩展性更强,可以减少代码重复,并提高代码的复用性。在这个文档中,通过两...

    多态PPT文件!!!!

    在IT行业中,多态(Polymorphism)是一个核心概念,主要在面向对象编程(Object-Oriented Programming, OOP)中出现。它允许我们使用一个接口来表示多种不同的类型,从而提高了代码的灵活性、可扩展性和可重用性。在...

    java 多态 经典讲解

    ### Java多态经典讲解 #### 一、理解Java多态 多态,作为面向对象编程的三大特性之一,是继抽象和继承之后的关键概念。它允许我们以统一的接口处理不同类型的对象,增强了代码的灵活性和可扩展性。在Java中,多态...

    封装继承多态总结

    封装继承多态总结

    Animal(多态练习)

    "Animal(多态练习)"这个主题,显然是为了帮助开发者理解并掌握多态这一面向对象的核心概念,同时结合设计模式的基础应用。 多态(Polymorphism)是面向对象三大特性(封装、继承、多态)之一,它允许我们使用一个...

    C++继承与多态例子

    在C++编程语言中,继承和多态是面向对象编程(OOP)的两个核心概念。继承允许我们创建一个新类(子类),它继承了另一个类(父类)的属性和方法,从而实现了代码的重用和扩展。多态则是指同一种行为在不同对象上表现...

    java中多态实现

    java多态实现的课件,给那些需要的人 讲述了java多态的概念、分类、实现 综合案例讲解、总结多态的作用

    java多态练习题

    java多态、继承练习题,包含题目与答案,............................................................................................................

    国外一款多态引擎asm

    国外一款多态引擎asm 作为代码变形的一项技术

    易语言的继承多态演示

    在易语言中,继承和多态是面向对象编程的重要概念,它们在软件设计中起到关键作用,允许代码重用并提高灵活性。下面将详细解释这两个概念以及如何在易语言中实现它们。 **继承**: 在面向对象编程中,继承是子类...

Global site tag (gtag.js) - Google Analytics