初识C++(23)之虚函数、虚指针、虚表的定义

本文介绍了C++中的虚函数、虚指针和虚表的概念。虚函数是类成员前带有virtual的函数,使多态成为可能。虚指针是带有虚函数的类所特有的,它指向包含虚函数地址的虚表。通过实例和代码验证,展示了虚函数、虚指针和虚表在内存布局中的表现。
摘要由CSDN通过智能技术生成

虚函数

对于类的成员函数,如果在前面加上virtual,那么这个成员函数就是虚函数,这个类就是带有虚函数的类。

虚指针,虚表

带没有虚函数的类,与不带虚函数的类之间有什么区别呢?带有虚函数的类比不带虚函数的类会多一个指针,这个指针就是虚指针,而虚指针指向一个表,这个表就叫做虚表。虚表里面存的内容就是虚函数的地址。

例子:

#include <iostream>
using namespace std;
 
class Base{/*该类中函数均为虚函数*/
public:
    virtual void f(){cout<<"Base::f()"<<endl;}
    virtual void g(){cout<<"Base::g()"<<endl;}
    virtual void h(){cout<<"Base::h()"<<endl;}
    Base() : a(0),b(1) {   }
private:
    int a;
    int b;
};
class Base_Two{/*该类中函数均为非虚函数*/
public:
    void f(){cout<<"Base::f()"<<endl;}
    void g(){cout<<"Base::g()"<<endl;}
    void h(){cout<<"Base::h()"<<endl;}
    Base_Two() : a(0), b(1) {   }
private:
    int a;
    int b;
};
int main()
{
    Base b;
    cout<<"Virtual function:"
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值