如何在C语言中实现后期绑定?
后期绑定实际上并不是C语言本身的功能,而是您的执行环境为您提供的更多功能.
许多系统将提供延迟绑定作为链接器/加载器的一个特性,您还可以使用显式调用,例如dlopen
(打开共享库)和dlsym
(获取该库中符号的地址,以便您可以访问它或调用它).
使用C标准进行后期绑定的唯一半便携式方法是使用一些技巧,system()
甚至至少部分是特定于实现的.
如果你不是在谈论延迟绑定而是多态,那么你可以用函数指针实现这种效果.基本上,您创建一个struct
包含类型的所有数据的函数以及用于查找该类型的方法的函数指针.然后,在"构造函数"(通常是init()函数)中,将函数指针设置为该类型的相关函数.
你仍然需要包括所有的代码,即使你不使用它,但它是可能获得的多态性的方式.