首页 > 其他分享 >31动态绑定的时机

31动态绑定的时机

时间:2024-01-25 17:14:02浏览次数:21  
标签:Derive show 31 绑定 Base dptr 动态

动态绑定的时机

  • 在类的构造函数中调用的任何(虚)函数,都不会发生动态绑定。
  • 如果不是通过指针或引用调用虚函数,也还是静态绑定。
class Base
{
public:
	Base(int data = 10) : ma(data) { cout << "Base" << endl; }
	virtual ~Base() { cout << "~Base" << endl; }

	virtual void show() { cout << "Base::show()" << endl; }
	virtual void show(int) { cout << "Base:show(int)" << endl; }
protected:
	int ma;
};

class Derive : public Base
{
public:
	Derive(int data = 20) : Base(data), mb(data) { cout << "Derive" << endl; }
	~Derive() { cout << "~Derive" << endl; }  // 自动成为虚函数,会覆盖基类虚析构函数
	void show() { cout << "Derive::show()" << endl; }
private:
	int mb;
};

int main()
{
	Base b(10);
	Derive d(10);

	//用对象本身调用虚函数,是静态绑定
	b.show();  
	d.show();

	//用指针或引用调用虚函数,是动态绑定
	Base* b1 = &b;
	Base* b2 = &d;

	Base& b3 = b;
	Base& b4 = d;


	b1->show();
	b2->show();

	b3.show();
	b4.show();

	Derive* dptr = (Derive*)&b;
	dptr->show(); //看的是b中虚函数表的show方法,即Base::show()

	return 0;
}

标签:Derive,show,31,绑定,Base,dptr,动态
From: https://www.cnblogs.com/sio2zyh/p/17987567

相关文章

  • 29虚函数-静态绑定-动态绑定
    虚函数-静态绑定-动态绑定如果类中定义了虚函数,那么编译阶段,编译器会给这个类类型产生一个唯一的vftable虚函数表,其中主要存储的是RTTI指针和虚函数的地址。程序运行时,每一张虚函数表都会加载到内存的.rodata只读数据区。一个类中定义了虚函数,那么这个类的对象,其运行时,内存中开......
  • 用于汽车类有刷直流电机、电磁阀,DRV8316CTQRGFRQ1、DRV8143SQRXYRQ1、DRV8242SQRHLRQ1
    1、DRV8316CTQRGFRQ1 具有集成电流检测功能、峰值电流为8A的汽车级三相电机驱动器电机类型-步进:多相电机类型-AC,DC:无刷DC(BLDC)功能:驱动器-全集成,控制和功率级输出配置:半桥(3)接口:PWM技术:NMOS步进分辨率:应用:-电流-输出:8A电压-供电:4.5V~35V电压-负载:4.5V~35V工作......
  • 中国移动CMCC rax3000m免拆机刷OpenWRT uboot 20231027 NAND emmc MT7981
    1、100大洋购买的CMCCARX3000,不刷系统的时候也挺好用,就是无法满足特殊需求2、输入路由地址、192.168.10.1,进入路由管理界面,账号和密码,设备背面默认3、在高级设置->管理->配置管理->导出配置文件、得到:cfg_export_config_file.conf文件 4、在linux系统下,Ubuntu下进行文件配......
  • 根据word模板动态导出word文档
    根据word模板动态导出word文档前置条件:新建一个springboot项目1.引jar包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><group......
  • 基于振弦采集仪的工程结构动态监测研究
    河北稳控科技基于振弦采集仪的工程结构动态监测研究基于振弦采集仪的工程结构动态监测研究,是指利用振弦采集仪对工程结构进行动态监测和分析的研究工作。振弦采集仪是一种常用于结构健康监测的设备,它通过采集结构的振动信号,并对信号进行处理和分析,可以获取结构的动态特性和健康......
  • GB/T 34131-2023《电力储能用电池管理系统》解读及测试实践
    新国标简介: GB/T34131《电力储能用电池管理系统》是规定了电力储能用电池管理系统的技术要求、试验方法、检验规则、标志、包装、运输与贮存要求的国家标准。随着我国储能行业的迅猛发展,国标也相应地进行系统性更新。 2023年10月1日,GB/T34131-2023《电力储能用电池管理系......
  • 动态规划之背包DP
    2024-1-24首先是完全背包和0-1背包:同样是限制空间容量最大为m,然后有n类物品,两者的区别在于:①完全背包中每一类物品有ki个,而0-1背包中每类物品只有1个。②实现上完全背包是正序循环的,而0-1背包是逆序循环的,因为前者需要考虑装多个物品的情况(这个从转移方程可......
  • SpringBoot开启动态定时任务并手动、自动关闭
    场景需求:在执行某个方法的两小时之后进行某个操作涉及:定时任务、哈希表需要注意:业务逻辑层是单一实例的,所以在定时任务类内操作业务逻辑层的某个属性和在业务逻辑层内操作的都是同一个。疑问:ThreadPoolTaskScheduler线程池需不需要规定线程数量?定时任务类@Componentpublicc......
  • C# 动态操作DataTable(新增行、列、查询行、列等)
    publicvoidCreateTable(){//创建表DataTabledt=newDataTable();//1、添加列dt.Columns.Add("Name",typeof(string));//数据类型为文本//2、通过列架构添加列Data......
  • WPF动态绑定隐藏或显示DataGrid一列(转)
    原文连接一、添加一個FrameworkElement的代理<Window.Resources><FrameworkElementx:Key="ProxyElement"DataContext="{Binding}"/></Window.Resources> 二、用一個不可見的ContentControl綁定上一步的FrameworkElement代理<ContentControlV......