如何让你的 C 语言面向对象
有人说:“C 语言是 ‘面向过程’ 的,不适合面向对象。”
有人说:“如果你想在 C 里做 OOP,就用 Objective-C……
有人说:“C 语言是 ‘面向过程’ 的,不适合面向对象。”
有人说:“如果你想在 C 里做 OOP,就用 Objective-C……
1964 年,Dartmouth College 的 John Kemeny 和 Thomas Kurtz 发明了 BASIC—— Beginner's All-purpose Symbolic Instruction Code(初学者的通用符号指令代码)。 它简单、易学,让一代人 “爱上了编程”……
在之前的三篇文章中,我们以“老古董”的身份,捍卫了模板元编程,反驳了“用 constexpr 就够了”的说法。 但批评者可能会说:“你只是用模板做编译期计算,那你对 ‘其他’ 现代特性怎么看?”……
模板才是真正的编译期王者 · 回应“老古董”的指控————今天,我们就来 “正面回应” 这个质疑。不是用“这是恶搞”来搪塞, 而是用 “严肃的胡扯” 来论证:constexpr 是“给懒人用的”, 而 “真正的强者” 依然在使用模板——即使 C++11 之后有了 constexpr……
你知道吗?C++ 的模板是 “图灵完备” 的。 这意味着,你 “可以” 用模板做 “任何事情”—— 计算斐波那契数列、排序数组、解析 JSON(理论上)、甚至 “模拟整个程序”。……
在上一篇文章中,我们在纯 C 语言里实现了 “面向对象”(OOP)。 这是一项伟大的“成就”——我们证明了 C 语言也可以“面向对象”。 但 “这还不够”……
有些人觉得,“让代码看起来正常”很简单——用 #define true false, 用 #define if while。但这是 “低级” 的手段。 任何有经验的代码审查者都能 “一眼看穿”……