有这么一种使用场景,一个新时代农民工要做一种库给别人使用
默认帮助客户实行了一套逻辑,按照码农自己的理解搬砖需要自己用手搬
比如 void 搬砖(){ std::cout << "搬砖需要用手搬" ;}
可是 客户想,现在都啥时代了,你们自己卷去,我得用机器搬,最好AI搬
那交互过来的代码怎么办呢,自己坚持要用手搬,还得满足客户的要求!
如果在C语言中,可以这样实现 用weak 标明码农自己的方法是弱鸡
__weak void 搬砖(){ std::cout << "搬砖需要用手搬" ;}
那客户拿过来,只要重写下这个函数就可以了,买了最新AI搬砖机器人 实现:
void 搬砖(){ std::cout << "搬砖需要用AI搬" ;}
编译器编译的时候发现有了weak 在另外还有实现搬砖这个方法,就会去掉弱鸡方法,只保留好壮壮的方法,这样就能适应各种复杂多变的需求。
如果开发过stm32之类的嵌入式程序,很多HAL库,都是这么实现的,SDK保留默认的 ,用户根据需求,可以自己实现
-----------------------------------------------------------------------------------------------------------------
C都出现这么多年了 那么在高级语言中呢? 更晚的C++ C# virtual 虚函数出现了
这2兄弟感觉也真是好 ,一个弱 一个虚的 ,总之就是让别人霸凌的对象,别人强了自己就让步,按照别人的方式做 。
可就是这么个柔弱的东东,构成了 (封装 继承 多态) 三座大山中的重要一山
为大型系统的灵活和扩展性奠定了重要