C语言一样可以用面向对象的思想编程,尽管语法没那么优雅,但只要符合一定的规范编程,一样可以做到优雅的内存管理。
等等,我真的没跑题,请读下去。
很多开放框架就是面向对象思想设计的C接口,例如OpenGL,这样的设计里返回指针非常常见,形式看起来是这样的:
void* NewObject(); //创建对象
void DestroyObject(void* object); //销毁对象
void DoSomething(void* object, int arg); //方法
如果要允许用户有更优雅的内存管理,还可以加入引用计数:
void* NewObject(); //创建对象,引用计数=1
void Retain(void* object); //引用计数++
void Release(void* object); //引用计数--,如果等于0则销毁对象
void DoSomething(void* object, int arg); //方法
OpenGL就是这样设计的,所以返回指针未必是愚蠢的做法,相反,有时候是非常高大上的设计。
那为什么这样的代码不用C++啊?因为C的兼容性和性能都无与伦比啊!但这不会意味着我们不需要面向对象,面向对象依然是大型项目非常重要的设计基础,所以大家都应该学学这种C语言的设计模式。