c – 是否可以在运行时替换方法?

c – 是否可以在运行时替换方法?,第1张

概述我想创建一个能够在运行时覆盖方法的插件系统. 一些答案说功能指针,但定义的函数或类怎么样? 像这样: class foo{ public: bar(int foobar);} 有没有办法获取功能指针,或替换它? 顺便说一句,挂钩不是一个答案,因为它非常具有平台性和危险性. 运行时功能“替换”可以通过以下几种技术之一实现: > Polymorphism >标准图书馆设施,如std:: 我想创建一个能够在运行时覆盖方法的插件系统.

一些答案说功能指针,但定义的函数或类怎么样?

像这样:

class foo{  public:    bar(int foobar);}

有没有办法获取功能指针,或替换它?

顺便说一句,挂钩不是一个答案,因为它非常具有平台性和危险性.

解决方法 运行时功能“替换”可以通过以下几种技术之一实现:

> Polymorphism
>标准图书馆设施,如std::function
>用于转换或分派函数调用的第三方库或平台特定技术.

哪个选项更好是高度依赖于预期用途和目标环境.例如;插件系统可以很好地利用多态性(使用适当的工厂,甚至可能与template method pattern结合使用),而内部函数路由可以使用std :: function.

这些技术不会真正“替换”任何函数,而是可以在运行时设置以根据需要路由函数调用.

注意我专注于问题的C方面(它标记为C和C,但示例代码是C).

总结

以上是内存溢出为你收集整理的c – 是否可以在运行时替换方法?全部内容,希望文章能够帮你解决c – 是否可以在运行时替换方法?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1223322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存