码迷,mamicode.com
首页 > 编程语言 > 详细

【C++】虚函数和纯虚函数

时间:2021-01-01 12:11:47      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:tps   UNC   using   details   virtual   new   使用   技术   ase   

https://zhuanlan.zhihu.com/p/37331092  虚函数和纯虚函数

https://blog.csdn.net/u012206617/article/details/87697667 虚函数和纯虚函数

https://www.cnblogs.com/chwei2ch/p/10628608.html 虚函数和纯虚函数

https://zhuanlan.zhihu.com/p/37340242 多态,讲得挺好

虚函数例子:

#include<iostream>

using namespace std;

int main()
{
    class base
    {
    public:
        virtual void vir_func()
        {
            cout << "这是基类的虚函数" << endl;
        }
        void func()
        {
            cout << "这是基类的普通函数" << endl;
        }
    };
    class A :public base
    {
    public:
        virtual void vir_func()
        {
            cout << "这是类A的虚函数" << endl;
        }
        void func()
        {
            cout << "这是类A的普通函数" << endl;
        }
    };
    class B :public base
    {
    public:
        virtual void vir_func()
        {
            cout << "这是类B的虚函数" << endl;
        }
        void func()
        {
            cout << "这是类B的普通函数" << endl;
        }
    };

    base* Base = new base;
    base* a = new A;
    base* b = new B;
    Base->func();
    a->func();
    b->func();
    cout << "##########################" << endl;
    Base->vir_func();
    a->vir_func();
    b->vir_func();
    cout << "###########################" << endl;
    ((A*)b)->vir_func();
    ((A*)b)->func();

    return 0;
}

// 结论:当使用类的指针调用成员函数时,普通函数由指针类型决定,而虚函数由指针指向的实际类型决定。

技术图片

 

 

 

#include<iostream>
using namespace std;

class Virtualbase
{
public:
    virtual void Demon() = 0;
    virtual void Base()
    {
        cout << "这是基类(抽象类)的虚函数" << endl;
    }
};

class SubVirtual :public Virtualbase
{
public:
    void Demon()
    {
        cout << "这是子类实现的纯虚函数" << endl;
    }
    void Base()
    {
        cout << "这是子类的虚函数,复写了基类的虚函数方法" << endl;
    }
};

int main()
{
    Virtualbase* inst = new SubVirtual;
    inst->Demon();
    inst->Base();

    return 0;
}

技术图片

 

【C++】虚函数和纯虚函数

标签:tps   UNC   using   details   virtual   new   使用   技术   ase   

原文地址:https://www.cnblogs.com/masbay/p/14198961.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!