C++编程范型浅谈

 

每一个入门的C++程序员都应该知道C++支持多种编程范型,对于具体分类,一种普遍的看法认为包括有:类C语言、基于对象、面向对象、泛型。

在我看到的讲述C++的书籍中,很大部分都在讲述C++面向对象编程,这使得部分依靠阅读此类书籍来学习C++的程序员会认为C++就是一个面向对象的语言。然而面向对象觉得不是C++的全部,也不可能成为C++的全部。在D&E中,StroustrupC++语言的设计意图以及所遵循的语言哲学阐述得非常明白,C++并不是为面向对象而生。

不可否认C++很庞大,或许也有些复杂,但是这就如同生活。你为了达到某种目的不得不牺牲一些东西,相信这种牺牲是值得的。

我也不只一次看到,一些书籍中讲述应该完全使用面向对象的方法来使用C++,这样可以得到更好的抽象,然而不并不这样认为。在我的编程实践中,我一直使用着多范型协同合作的方式来使用C++,它让我感受到了其威力。似乎迷信于面向对象编程的人,会对每一样事务都做对象封装,哪怕程序中只对其进行一个简单的值访问,这样的对象中setget似乎成为了必需品。我想这样的程序员可能已经忘记了编程的实际目的了。在你的项目中,当一个对象的成员就是接口的时候,我们还有必要使用setget么?这样的对象更像是一个struct,我们为什么不就使用struct呢?

C++倡导使用类来表示概念。但是有些程序员会误解到使用类就是使用面向对象编程,似乎他根本就不知道基于对象这一说。一个“面向”,一个“基于”,在中文词语解释中相信差距还是很大的吧。面向对象的利器——继承和运行时多态,在一些C++程序中根本就没有一丁点儿必要,只会增加复杂度和性能开销。相反,在另一些C++程序中或许其就能成为出色的描述问题的方法。说到“多态”,好多人都会认为就是“运行时多态”,可是C++还提供一种强大的特性——“编译时多态”。它既没有运行时多态的性能开销,同时又拥有多态的特性。

说了这么多其实就是想说明一点:C++编程并不需要拘泥于一种编程范型,在合适的地方用最恰当的编程范型或许会给你带来新的启发。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值