C++中实现多态的方法

分类:知识百科 日期: 点击:0

C++中实现多态

有三种:虚函数、抽象类和模板。

虚函数

虚函数是C++中实现多态的最常用方法,它是通过在函数前加上关键字“virtual”来实现的。虚函数可以被子类重写,当调用虚函数时,会根据对象的类型来调用不同的函数,实现多态。例如:

class Base
{
public:
    virtual void func()
    {
        cout << "Base::func()" << endl;
    }
};

class Derived : public Base
{
public:
    void func()
    {
        cout << "Derived::func()" << endl;
    }
};

int main()
{
    Base *pBase = new Derived();
    pBase->func(); // 输出 Derived::func()

    return 0;
}

抽象类

抽象类是通过将类中的某些函数声明为纯虚函数来实现的,纯虚函数是没有实现的虚函数,只有声明,由子类实现。抽象类不能被实例化,只能被继承,子类必须实现抽象类中的纯虚函数,才能被实例化。例如:

class Base
{
public:
    virtual void func() = 0;
};

class Derived : public Base
{
public:
    void func()
    {
        cout << "Derived::func()" << endl;
    }
};

int main()
{
    Derived derived;
    derived.func(); // 输出 Derived::func()

    return 0;
}

模板

模板是C++中实现多态的另一种方法,它是通过将类型作为参数传递给模板函数来实现的。模板函数会根据传入的参数类型来调用不同的函数,实现多态。例如:

template
void func(T t)
{
    t.func();
}

class Base
{
public:
    void func()
    {
        cout << "Base::func()" << endl;
    }
};

class Derived : public Base
{
public:
    void func()
    {
        cout << "Derived::func()" << endl;
    }
};

int main()
{
    Base base;
    Derived derived;
    func(base); // 输出 Base::func()
    func(derived); // 输出 Derived::func()

    return 0;
}

以上三种方法都可以用来实现C++中的多态,选择哪种方法取决于实际需求。

标签:

版权声明

1. 本站所有素材,仅限学习交流,仅展示部分内容,如需查看完整内容,请下载原文件。
2. 会员在本站下载的所有素材,只拥有使用权,著作权归原作者所有。
3. 所有素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 如果素材损害你的权益请联系客服QQ:77594475 处理。