C++ 动态绑定与 静态绑定

对象的动态类型与静态类型

  1. 静态类型

类型检查在编译期间完成

  1. 动态类型

类型检查在运行期间完成

  • 注:动态类型可在程序运行时修改,静态类型在程序运行期间不可修改。一般情况下,函数为动态类型,非虚函数为静态类型

例子(用于区分 静态类型动态类型

假设三个类A,B,C
B 继承 A,C 继承 B

class A
{
	void fun();
	virtual void DoThing();
};

class B:public A
{
	void fun();
	virtual void DoThing();
};

class C:public B
{
	void fun();
	virtual void DoThing();
};

A* pA = new A();	//pA 的静态类型是 A* ,动态类型为 A*
B* pB = pA;	//pB 的静态类型是 B* ,动态类型是 A*
C* pC = new C();	//pC 的静态类型是 C* ,动态类型为 C*
pB = Pc;	//修改 pB 的动态类型为 C*
posted @ 2023-09-07 10:10  _神奇海螺  阅读(10)  评论(0编辑  收藏  举报