通过程序举例说明哪些情况下是静态联编(同名隐藏/类型兼容规则),哪些情况下又是动态联编
时间: 2024-03-01 18:49:28 浏览: 68
静态联编(同名隐藏/类型兼容规则)是在编译期间确定函数的调用关系,主要的场景有:
1. 函数重载:当同一作用域内有多个同名函数但参数列表不同,编译器会根据参数列表的类型和数量来确定具体调用哪个函数。
2. 父子类之间的函数重写:当子类重写父类的虚函数时,编译器会在编译期间确定调用哪个函数。
动态联编则是在运行期间根据对象的实际类型确定函数的调用关系,主要的场景有:
1. 虚函数的多态性:当一个虚函数被声明为虚函数时,编译器会将其实现为一个虚函数表(vtable),在运行时根据对象的实际类型来确定调用哪个虚函数表中的函数。
2. 使用函数指针:当使用函数指针调用函数时,编译器无法确定具体调用哪个函数,需要在运行时根据函数指针指向的函数来确定调用哪个函数。
阅读全文