虚函数的一点探索之一

本文探讨了C++中的虚函数机制,详细解释了虚函数的作用、如何使用以及其在多态性中的关键角色。通过实例分析,展示了虚函数如何在继承体系中实现动态绑定,以实现更灵活的代码设计。
摘要由CSDN通过智能技术生成
/*
 * 虚函数的三种调用
 * 1: 指针
 * 2: 引用
 * 3: 对象(不能实现多态)
 */

#include <iostream>
#include <typeinfo>
using namespace std;

//继承,默认情况下class是私有继承 struct默认是公有继承
//虚函数可以调用成员函数
//多态调用依赖于指针 或 引用调用
//对象的调用有副本机制,会调用拷贝构造 拷贝一个父类 无法实现多态
//p->go();   //多态调用
//p->myclass::go();  //原生调用
//虚函数重载和返回值无关 和参数的类型 个数 顺序有关
//虚函数被继承下来了还是虚函数
//如果要使用被继承的虚函数 不允许出现虚函数重载和覆盖
//多态可以跨类 爷爷辈的指针 可以存储孙子辈的地址 父辈拔针的地址
class myclass
{
public:
    int i;
    virtual void go()
    {
        i = 0;
        show();
    }
    void show()
    {
        std::cout << "myclass->show()" << std::endl;
    }
    virtual ~myclass()
    {
        // 不加virtual 会造成内存泄漏
    }
};

class newmyclass: public myclass
{
public:
    void go()
    {
        std::cout << "newmyclass->go()" << std::endl;
    }
    void show()
    {
        std::cout << "newmyclass->show()" << std::endl;
    }
    void put()
    {
        std::cout << &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值