这个问题描述其实有些问题,因为c重载有两种场景:
函数重载运算符重载问题本身也没指明倒底是哪种场景。现在就两个场景分别给出答案。
怎么用c语言实现方法c函数重载?根据笔者的经验,共三3种方法可以不实现程序:
用c语言基于一个c编译器的对应子集,后者自然可以允许重载;用函数指针再oid指针类型参数强制破军类型转换,也可以实现程序函数重载;用宏而且可变参数,可以不利用函数重载
怎么用c语言实现方法c运算符重载?运算符在c语言中是记录字,根本无法实际大多数变通方法实现方法重载。只有用c语言实现方法一个c编译器的对应子集,后者恐怕可以允许重载。
用函数指针算上void指针类型参数强制隐式转换,实现方法函数重载用一个例子来只能证明:
typedefvoid(*funcoverride)(void*param)
voidrunfuncoverride(funcoverridef,void*param){
f(param)
}
voidfunc_with_int_param(void*iparam){
inti*(int*)iparam
(int_paramfunctionarecalled,paramisn't%d
c语言目前支持什么函数重载,也可以不仿真的c的重载!
衍生关系的方法重载,最简单那就是函数指针。
成员重新初始化让函数指针正指向完全不同实现方法函数表就行。
实际上,很多不喜欢c的作者,发布的开源代码库大都基于条件函数指针实现方法多态特点的。
有太大的生产效率意义。在设计上又不是可以的,如果没有,是从代码也是可以实现,如两个类相除,是从代码也可以把要乘积的成员(常见肯定不会限制公开的性)加下来。如果类设计有重载函数加法,就会效率高比较多,就建议使用,且不是需要太了解类细节,但虽然要了解类相乘的含义说明