首页 > 其他分享 >虚函数表 和 虚函数指针

虚函数表 和 虚函数指针

时间:2024-07-16 10:31:57浏览次数:15  
标签:虚表 函数 miao 64 函数指针 age 指针

 虚函数指针 vptr 大小

  x86 平台 下为4个字节,x64 平台下为8个字节

例题:涉及内存对齐

 答案:

32位 miao age = 2 64位 miao age = 1 核心在这句话上 p【1】 = q【1】; 由于两个子类都继承自有虚函数的基类 因此都带有虚表指针 首先基类中只有一个int 4 32位下,虚表指针也是4 int*p后p【1】就是偏移一个单位(大小4) 跳过了虚表指针,访问到了成员变量age 因此cat的age = dog的age miao age = 2

64位下,虚表指针8 int*p后p【1】就是偏移一个单位(大小4) 没法越过虚表指针,p【1】 = q【1】; 只虚表指针的后4个字节的覆盖由于class cat和class dog的结构是相同的 虚表指针数值保持不便 也未操作过age成员变量,cat的age还是1 miao age = 1

intptr_t 这个宏可以兼容32位和64位

标签:虚表,函数,miao,64,函数指针,age,指针
From: https://www.cnblogs.com/JOKER2255/p/18304658

相关文章

  • Excel 学习手册 - 精进版(包括各类复杂函数及其嵌套使用)
    作为程序员从未想过要去精进一下Excel办公软件的使用方法,以前用到某功能都是直接百度,最近这两天跟着哔哩哔哩上的戴戴戴师兄把Excel由里到外学了一遍,收获良多。程序员要想掌握这些内容可以说是手拿把掐,对后续Excel的运用也会有非常好的效果,在处理数据时,比起现写一些一次......
  • QT常用函数
    #include<QFileDialog>QFileDialog::getOpenFileName()//打开一个文件,得到这个文件的绝对路径FileName=QFileDialog::getOpenFileName(this,"prd",dir.currentPath(),"prd(*.prd)");#include<QFile>QFilefile;file("文件路径")或者file.setF......
  • eBPF bpf_redirect函数
    函数定义https://www.man7.org/linux/man-pages/man7/bpf-helpers.7.html网卡响应报文网卡要响应报文,不是经过该网卡就可以。报文必须进入这个网口才行,bpf_redirect表示进入这个网口(虚拟机网口除外,需要指定BPF_F_INGRESS才行)。因为网卡响应在tcingress之前,所以左侧流程虚拟......
  • php函数入门学习(数组常见函数2 & 文件基础读写)
    //1、写一个函数,传入数组,返回数组中元素为数字且大于10的新结果数组functiongetNumArr($arr){  if(!$arr)return'请传入数组';  $arr2=array_filter($arr,function($v){    //echogettype($v)."<br>";    returngettype($v)==='inte......
  • 一篇精通单行函数
    单行函数1.数值函数1)基本函数函数用法ABS(x)返回x的绝对值SIGN(X)单元格PI()返回圆周率的值CEIL(x),CEILING(x)返回大于或等于某个值的最小整数FLOOR(x)返回小于或等于某个值的最大整数LEAST(e1,e2,e3…)返回列表中的最小值GREATEST(e1,e2,e3…)返回列表中的最大值MOD(......
  • 模板——函数模板的基本语法和调用规则
    1.模板函数    1.1分为自动类型堆到和显示指定类型template<classT>voidSwapNum(T&a,T&b){ Ttemp=a; a=b; b=temp;}voidtest01(){ inta=10; intb=20; doublec=30.5; doubled=40.8; SwapNum(a,b);//自动类型推导 SwapNum<in......
  • VINS-Fusion源码逐行解析:updateLatestStates()函数与slideWindow()
    初始化并优化位姿后,接下来做的事是将这些位姿更新给上一帧,我们来看下updateLatestStates()源码:voidEstimator::updateLatestStates(){//锁定mPropagate,确保对最新状态的更新是线程安全的mPropagate.lock();//更新最新的时间戳,等于当前帧的时间戳加上时间延......
  • 定义损失函数并以此训练和评估模型
    基础神经网络模型搭建 【Pytorch】数据集的加载和处理(一)【Pytorch】数据集的加载和处理(二)损失函数计算模型输出和目标之间的距离。通过torch.nn包可以定义一个负对数似然损失函数,负对数似然损失对于训练具有多个类的分类问题比较有效,负对数似然损失函数的输入为对数概......
  • 四、Python集合与函数
    集合set1.不同元素组成2.无序3.集合中元素必须是不可变类型s={1,2,3,4,5}集合常用魔法s={1,2,3,4,5}s.add('s')print(s)#>>>{1,2,3,4,5,'s'}s.add(6)print(s)#>>>{1,2,3,4,5,'s',6}s.clear()print(s)s={1,2,3,4,5}v=s......
  • Vue 3 中 defineExpose() 函数的使用
    什么是defineExpose()?defineExpose()是Vue3提供的一个CompositionAPI函数,用于明确指定哪些内部响应式状态或函数可以被外部访问。如何使用defineExpose()?在子组件中定义:import{ref,defineExpose}from'vue'exportdefault{setup(){constcount=......