如何在C++中实现面向对象的程序设计?


How to start object orient programming in C++?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
The Definitive C++ Book Guide and List

基本上我来自C,嵌入C字段。在这个领域工作了5年之后,我想开始C++。现在,我已经开始学习C++了。但是课堂的概念并没有在我的脑海中闪现。请告诉我,我应该如何开始上课的概念或一些简单的网站,我可以轻松地启动C++。请给我一些好的C++问题(我可以找到一些C++练习的网站)。


看一看权威的C++图书指南。因为你有C背景,所以我推荐凯尼格和Moo的"加速C++",因为它从一开始就显示了现代C++思想中的代码。这可能有助于你关注C和C++之间的差异,并向你展示你必须忘记的C习惯的哪些部分。


如果你想学习C++,StruouStruts的"C++语言"是一个很好的起点。IMO本人也从Scott Meyers的"有效C++"和"更有效的C++"中学到了很多。

另外,我认为,考虑到您的嵌入式背景,您可能不仅需要"学习语言",还需要了解面向对象编程。我认为这一领域的基本书籍之一是Grady Booch的"面向对象的分析和设计"和"四帮":Gamma/Helm/约翰逊/VLISTHES"设计模式"(虽然两本书都是用Java背景编写的)。


C++源于C,这本书可以帮助你理解C++:"C++对象模型里面"


"class"的概念可以很容易地建模为一个包含数据成员的c struct和一个指向包含函数指针(v-table)的结构的指针,其中所有函数都有一个"hidden"参数Class* this

也就是说,如果您已经熟悉了结构、指针和函数指针,那么类就不是"错误的"。

其他一切都是"使用的艺术",它本身与类概念本身无关,而是与如何安排它们以拥有有效的可维护代码有关。

现在你可以

  • 尝试自己编写一个C程序设计的TAT方式(注意复杂,只是为了找到线索),或者
  • 忘记C本身,试着理解这个概念应该如何使用(而不是技术上的概念)。

最后一点,凯尼格和Moo"加速C++"的书可以是一个很好的启动器:它不考虑C,而是如何使用C++和它的库,并且在深入和深入地展示这些概念来自何处之后。