前言(看不懂的地方可以跳过)
说起编程,大概还有很多人能想起C语言(简称C)的#include <stdio.h>吧?
可是,C语言的输入/输出函数printf()和scanf(),需要指定格式,scanf()还要传递地址,而且遇到不认识的东西就无法工作了,这些东西能令人满意吗?显然是不能的。
C++在C的基础上,新增了很多特性,例如引用变量和类,等等。一般来说,C是一种底层的语言(低级,low-level),而C++是高级语言。
还要说一个重要的地方:C++完全兼容C,也就是说,可以用C++写C的代码,例如printf()函数。虽然如此,也不能过分的使用C++写C代码。但是C不能兼容C++。
本教程的目的在于让大家学习C++,而且是正确的C++,而不是“C风格”的C++。(现在网上有些人说他们写的是C++,然而实际上写的却几乎是C语言。)本教程主要介绍C++98/03和C++11标准,虽然现在已经有C++14标准了。
最后说一下C和C++的创始时间:C是1972年,C++是1983年。
声明:本教程的大部分代码来自《C++ primer plus 6》。
准备学习C++
在选择编译器之前,我们先了解一些C++术语:
C++术语 | 术语的意思 |
面向对象编程(OOP) | 一种与C语言面向过程编程相对的编程方法。OOP首先设定类,准确表述了程序要处理的东西。例如C++标准输入/输出使用 |
C++98 | C++标准第一版,1998年获得ISO、IEC和ANSI批准的C++国际标准,也叫做ISO/IEC 14882:1998,添加了异常、RTTI和STL。C++98标准篇幅接近800页。 |
C++03 | C++标准第二版,2003年发布,对第一版进行了整理(修订错误,减少多义性等),但没有改变语言特性 |
C++11 | C++2011年8月制定的新标准,一次大更新,增加许多特性,消除不一致性。(C++11也曾被称为C++0x,最初预期x为7或8,幸运的是,可将0x视为16进制数,于是2015年前完成该标准就可以了。)C++11标准篇幅长达1350页。 |
ANSI C | C语言新标准,1983年提出,对C语言进行标准化。 |
K&R C | 在ANSI C出现之前,C标准基于Kernighan和Ritchie编写的《The C Programming Language》一书,通常被称为K&R C。ANSI出现后,K&R C也叫做经典C(Classic C)。 |
C99 | 1999年对C语言的更新 |
STL | 模板和标准模板库 |
I/O | 输入/输出(input/output) |
C++文件的扩展名可以是cpp, cxx, cc, cp, c++, c或C。一般来说,.c是C文件扩展名,.C是UNIX下的C++扩展名(UNIX区分大小写)。一般C++的扩展名是.cpp。
接下来需要做的事情是选择一个C++编译器。建议大家找支持C++11的编译器,例如Windows的Visual Studio 2012或更高,g++ 4.8,Clang 3.3等等。但这些编译器也不是完全支持C++11,所以应尽量用更高版本。现在网上还有人说VC6.0好,可是这个编辑器并不支持C++11。
最后再说一点:有些编译器在程序执行完毕后会立即关闭窗口,而有一些不会。如果不会,可能会出现下面的字样:
press any key to continue
如果是简体中文版的则会显示:
请按任意键继续...
但并不是每一种编译器都会保持窗口打开。如果编译器执行完程序后会立即关闭窗口,请在程序结尾处添加以下代码(当然要在main()函数的return语句之前):
cin.get();
有些程序需要两条这样的语句:
cin.get();
cin.get();
这样程序执行到结尾处,会等待用户输入,但必须要在用户按下Enter之后,输入才会被发送给程序。
以后也会讲到下面的这条语句:
system("pause");
(要使用这条命令,需要包含头文件cstdlib,老式文件为stdlib.h。)这条语句将会提示press any key to continue之类的东西。
最后一点就是程序的运行。在windows下,运行程序时会显示一个黑色的窗口(叫做命令行窗口),而信息将会显示在这个窗口上(用白色的字)。像下面这样:
====================第1章 完====================
====================TO BE CONTINUED====================