又是一年一度的十一长假,因为各种原因,我需要快速的上手C++,不过之前一直保持下来的学一门语言一定要写日志记笔记的习惯让我只看不动手实在难受。正好这八天也就把这些内容给慢慢的写出来了。这个过程,自我感觉也足以让一个人上手C++,所以我也尝试一下这种类型的文章吧。
那么,先说明一下我自己的情况:
在此之前,我的主要语言是Java,我有一年多的Java的经验,还在SourceForge上注册有一个基于Java的开源项目。有一定的面向对象的编程思想。此外还在一年半前学过C,有大约3000行C的代码经验,不过现在基本忘记了。因此,对于学习C++来说,上手还是很快的。所以,我相信这篇文章也会适合类似于我这样的人吧。另外,之前在我们学校图书馆有看到一个似乎是C++和Java对比学习Java的书,倒是没有找到反过来的书,有知道的朋友推荐一下哈。
接下来说下我这八篇文章的思路:
- 基本语句与数据类型
- 函数与指针
- 程序的组织结构
- 面向对象基础
- 面向对象进阶
- C++泛型与template编程
- 异常处理机制
- 用一个小项目来总结
这里,我就使用一个最简单的约瑟夫环的小项目来总结这些天的内容,这里我将使用我那只知皮毛的UML知识还有单元测试的知识在VS2008上来构建这个项目,实际上,这个约瑟夫环是我数据结构实验的第一个任务,虽然直接用简单的过程化编程不到100行代码就搞定了,为什么要这么麻烦的去弄那么多乱七八糟的东西呢?很简单,其一,用来学习C++,一个小项目也能用上C++大多数的特性。其二,一屋不扫何以扫天下,一个小程序都没办法架构好,有可能搞得定一个大项目吗?
最后说一下我这两周学C++参考的两本书,第一本是Stanley B. Lippman 的<Essential C++>还有一本是钱能写的《C++程序设计教程第二版》。实话说,前者非常适合有一定背景知识的人上手C++,废话不多,而且对C++的各个方面都有所提及。但是缺点就是不能很形象的以一个项目的流程来从最基本的文件写法上开始,因此如果在不清楚头文件,源代码文件的情况下还是比较难立刻找到想要的东西的。而后者一般是大学的教材,这本书实话说,还是我看过的学校发的书里面比较好的一本,废话虽然多,但是整本书挺有逻辑的,内容非常的有组织,简单来说是它的目录做的很符合ISO文档标准,这个让我很喜欢。而且内容上也比较适合初学者入门。
那么,C++之路,从这里开始。
程序嘛,还是按照传统的以helloworld开始吧:
C++的helloworld,和Java没多大差别。作用就是打印出helloword而已。#include就是引用了,用<>按系统或者编译环境搜索,用""就是在本目录下搜索,写法可以这样:
不过要注意的是,那个<>之间不能有空格。
再来一个程序:
通过上面这段基本已经知道赋值和初学者常用的cin,cout了。
下面就让我们看看其他的一些基本编程语句:
好了,通过上面的基础知识,你已经可以编写一个很简单的程序了,比如我这里有个打印菱形星号的小程序:
我输入的是15的时候,程序执行的结果如下: