“三位诺贝尔物理学奖得主因为对混沌和隨机现象的研究而分享了今年的诺贝尔物理学奖……”
“装男人……男人装……”
“据说,面向对象思想的雏形来源於细胞,细胞里既有遗传物质,又有处理这些物质的酶……”
“世界母猩猩图鑑……”
“……”
“——等会?”
我刚才是不是看到了什么?
李林猛地抄过刚才隨便瞟过的一本杂誌。
“细胞?”
“细胞……”
“细胞!”
李林猛地一拍桌子,差点把一旁的胡云程给嚇到弹起来。
但他没空在意这些了。
他只觉得,有什么东西——
对上了。
李林快速把整篇文章读了一遍。
不是在意它的字面意思,而是它所指向的思维方式。
就像细胞:
细胞膜包裹著细胞核与细胞器,遗传物质和加工这些物质的酶被封装在同一个单元里,彼此不分离。
数据就是遗传物质,函数指针就是酶,结构体就是细胞膜。
把数据和操作数据的方法封装成一个不可分割的“细胞”,然后让这些细胞自己去管理自己的生命周期,自己去响应外部的消息。
多生命周期?那就各自管理各自的生命周期,在接口处做统一的安全校验。
类型安全?用函数指针的类型签名来保证输入输出的一致性。
至於內存泄漏和悬空指针……如果一个“细胞”从创建到销毁都有清晰的边界,那些野指针就变成了可以捕获的已知错误,而不是无法预防的灾难。
一通百通。
酣畅淋漓。
但更重要的是,李林不止是这个问题通了。
他全通了。
因为眾所周知,这其实是很简单的面向对象思想——
封装、继承、多態。
这些东西从来不是c++凭空发明出来的,它们在c语言里一样可以被实现,只不过需要你自己动手搭建。
可李林之前从来没有往这个方向想过。
因为他把先后分得太清了。
c语言是面向过程,c++是面向对象。
这是课本上白纸黑字写著的,是每一个学编程的人都被反覆灌输过的分类。