The nature of C++
2014-07-01 20:15
246 查看
就其本身而言,c++是一种非常低级的语言。唯有利用库,才能写出高层次的程序来。c++在运行时性能上做了一个很好的折中,能够在“一切都是对象”的语言与“避免任何抽象”的语言之间取得恰到好处的平衡。这就是c++的实用性。
面向对象编程固然是c++很重要的一面,而c++最重要的是模板。c++中的容器类大多数用模板写成,因其可以容纳毫无共同之处的对象,所以要求元素类型必须是某个共同基类的派生类毫无道理。除非你首先掌握了构造良好类的技术,否则急急忙忙去研究继承就是拔苗助长。
所谓的面向对象编程,就是利用继承和动态绑定机制编程。如果你知道有一个很好的程序使用了继承和动态绑定,你能做出怎样的判断?在我看来,这意味着该程序中有两个或两个以上的类型,至少有一个共同的操作,也至少有一个不同的操作。否则就不需要继承机制。此外,程序中必然有一个场景,需要在运行时从这些类型中挑选出一个,否则就不需要动态绑定机制。
如果你发现自己在程序的两个不同部分里做了相同的事情,试着把这两个部分合并到一个子过程中。如果你发现两个类的行为相近,试着把这两个类的相似部分统一到基类或模板中。
面向对象编程固然是c++很重要的一面,而c++最重要的是模板。c++中的容器类大多数用模板写成,因其可以容纳毫无共同之处的对象,所以要求元素类型必须是某个共同基类的派生类毫无道理。除非你首先掌握了构造良好类的技术,否则急急忙忙去研究继承就是拔苗助长。
所谓的面向对象编程,就是利用继承和动态绑定机制编程。如果你知道有一个很好的程序使用了继承和动态绑定,你能做出怎样的判断?在我看来,这意味着该程序中有两个或两个以上的类型,至少有一个共同的操作,也至少有一个不同的操作。否则就不需要继承机制。此外,程序中必然有一个场景,需要在运行时从这些类型中挑选出一个,否则就不需要动态绑定机制。
如果你发现自己在程序的两个不同部分里做了相同的事情,试着把这两个部分合并到一个子过程中。如果你发现两个类的行为相近,试着把这两个类的相似部分统一到基类或模板中。
相关文章推荐
- [Programming Visual C++]Chapter Five - The Lifetime of a GDI Selection
- 改写the father of c++ 写的计算器,只有源代码
- Adivce from the father of C++
- The memory size of a C++ object instance.
- Lisp的本质(The Nature of Lisp)
- A c++ class wrapper to simplify the use of CRITICAL_SECTION and avoid dead-lock
- Early Stages of the (Visual) C++ .Net 17
- [转]20 issues of porting C++ code on the 64-bit platform
- Adivce from the father of C++III
- "C++ Coding Standards" -- the Guru of all the C++ developers
- Elements of Programming Style -- The C++ Style Guide
- The C++ Source - A Pause to Reflect: Five Lists of Five, Part III - The Most Important C++ Software...Ever
- The C++ Source - A Pause to Reflect: Five Lists of Five, Part II - The Most Important C++ Non-Book Publications...Ever
- Inside The C++ Object Model ---- The Semantics of Data
- Inside The C++ Object Model ---- The Semantics of Constructors
- A physicist, an engineer, and a computer scientist discussing the nature of God.
- 《Inside C++ Object Model》 Chapter 2 : The semantics of Constructor
- An easy instance of using the template class in C++
- 20 issues of porting C++ code on the 64-bit platform
- Lisp的本质(The Nature of Lisp)