《计算机C++基础教程 完整版》由会员分享,可在线阅读,更多相关《计算机C++基础教程 完整版(177页珍藏版)》请在金锄头文库上搜索。
1、C+ 基础教程Beta 版原作:Juan Souli 翻译:Jing Xu (aqua)英文原版本教程根据Juan Soulie的英文版C+教程翻译并改编。 本版为最新校对版,尚未定稿。如有不明或错误之处,请参考英文原版,并敬请在本站留言指正。版权归作者所有,欢迎链接,请勿转载。本教程对C+语言进行了深入浅出的介绍,从基础知识到ANSI-C+标准的最新功能,内容涵盖了从数组,类等基本概念到多态、模板等高级概念。教程本着实用的原则,每一小节都结合了可以工作的程序实例,以便读者从第一课开始就可以上手实习。本翻译版本对许多C+概念中的关键词保留了中英文对照,以便读者增强理解,并方便日后阅读英文原版教
2、材目录1.简介 怎样使用本教程 2.C+基础 Basics of C+ 1.C+程序结构 Structure of a program 2.变量和数据类型Variables and Data types 3.常量 Constants4.操作符/运算符 Operators 5.控制台交互 Communication through console 3.控制结构和函数 Control structures and Functions 1.控制结构 Control Structures 2.函数I Functions I 3.函数II Functions II 4.高级数据类型 Advanced D
3、ata 1.数组 Arrays 2.字符序列 Character Sequences3.指针 Pointers 4.动态内存分配 Dynamic memory 5.数据结构 Data Structures 6.自定义数据类型 User defined data types 5.面向对象编程 Object-oriented Programming 1.类,构造函数和析构函数,类的指针 Classes. Constructors and Destructors. Pointers to classes. 2.操作符重载,this,静态成员 Overloading Operators. this.
4、Static members 3.类之间的关系 Relationships between classes: friend. Inheritance 4.虚拟成员,抽象,多态 Virtual Members. Abstraction. Polymorphism 6.C+高级 Advanced concepts 1.模板 Templates 2.名空间 Namespaces 3.出错处理 Exception handling 4.类型转换高级 Advacned Class Type-casting 5.预处理指令 Preprocessor Directives 7.C+ 标准函数库 C+ Sta
5、ndard Library 1.文件的输入输出 Input/Output with files C+基础教程简介怎样使用本教程读者范围本教程面向所有希望学习C+语言的读者。如果读者有其他编程语言背景或计算机相关基本知识可以帮助更好的理解教程内容,但这并非必须条件。对于C语言熟悉的读者可将前三章(1.1 到 3.4)当作复习,因为这部分内容主要介绍C+中的C部分。不过某些C+的语法与C还是有些差别,所以建议还是快速的读一下这部分。第四章讲述面向对象编程。第五章主要介绍ANSI-C+标准中的新增的功能。 本教程结构教程共分6章,每章分若干小节。你可以直接从主目录进入任意小节,并循每页底部的链接向后
6、浏览。很多小节含有一页例题介绍该章节主要知识点的使用。建议在进入下一章学习之前最好先阅读这些例题,理解每行代码。学习和练习一种编程语言的最好办法是自己修改书中例题程序,设法在程序中增加新的功能。不要不敢修改这些例题程序,这正是学习的方法。 兼容性备注ANSI-C+标准近几年来被接受为国际标准。尽管C+语言从二十世纪80年代即存在,ANSI-C+在1997年才被发表,2003年又被修订过。因此很多编译器不支持ANSI-C+中的部分新功能,特别是那些在此标准发表前即被发布的编译器。在本教程中,那些ANSI-C+中新增的而老一代C+编译器大多不支持概念将备用如下标志标出: ANSI C+新增的概念同
7、样对于C和C+在实现上有明显不同的概念,将备用如下标志标出: C 与 C+不同的地方编译器本教程中所有例题程序均为console程序(控制台程序)。此类程序以文本形式与用户交换信息,显示结果。所有C+编译器均支持console程序的编译。要了解更多关于如何编译的说明,请查询你的编译器用户使用手册。C+编译器和开发环境推荐很多读者询问编译器和开发环境的问题。除了常用的商用收费的MS Visual Studio, VC+,Borland C+等工具外,还有很多免费的工具也是很好用的。这里推荐两种免费的C+开发软件:1、Eclipse的CDT开发工具,官方网站在http:/www.eclipse.o
8、rg/cdt/2、开源工具Dev-C+和wxDev-C+第一章 C+ 基础知识 (Basics of C+)1.C+程序结构 Structure of a program 2.变量和数据类型 Variables and Data types 3.常量 Constants 4.操作符/运算符 Operators 5.控制台交互 Communication through console 1.1 C+程序结构 (Structure of a program)下面我们从一个最简单的程序入手看一个C+程序的组成结构。/ my first program in C+#include using name
9、space std;int main() cout “Hello World!”; return 0;Hello World! 上面左侧显示了我们的第一个程序的源代码,代码文件名称为hellowworld.cpp。右边显示了程序被编译执行后的输出结果。编辑和编译一个程序的方法取决于你用的是什么编译器,根据它是否有图形化的界面及版本的不同,编译方法也有可能不同,具体请参照你所使用的编译器的使用说明。以上程序是多数初学者学会写的第一个程序,它的运行结果是在屏幕上打出”Hello World!”这句话。 虽然它可能是C+可写出的最简单的程序之一,但其中已经包含了每一个C+程序的基本组成结构。 下面我
10、们就逐个分析其组成结构的每一部分:/ my first program in C+这是注释行。所有以两个斜线符号(/)开始的程序行都被认为是注释行,这些注释行是程序员写在程序源代码内,用来对程序作简单解释或描述的, 对程序本身的运行不会产生影响。在本例中, 这行注释对本程序是什么做了一个简要的描述。# include 以#标志开始的句子是预处理器的指示语句。它们不是可执行代码,只是对编译器作出指示。在本例中这个句子# include 告诉编译器的预处理器将输入输出流的标准头文件(iostream.h)包括在本程序中。这个头文件包括了C+中定义的基本标准输入-输出程序库的声明。此处它被包括进来是
11、因为在本程序的后面部分中将用到它的功能。using namespace std;C+标准函数库的所有元素都被声明在一个名空间中,这就是std名空间。因此为了能够访问它的功能,我们用这条语句来表达我们将使用标准名空间中定义的元素。这条语句在使用标准函数库的C+程序中频繁出现,本教程中大部分代码例子中也将用到它。(iostream.h与iostream的不同。#include是在旧的标准C+中使用。在新标准中,用#include。iostream的意思是输入输出流。#include是标准的C+头文件,任何符合标准的C+开发环境都有这个头文件。还要注意的是:在VC编程时要添加:using names
12、pace std;其原因是:后缀为.h的头文件C+标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,C+标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。因此,当使用时,相当于在C中调用库函数,使用的是全局命名空间,也就是早期的C+实现;当使用的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。)int main()这一行为主函数(main function)的起始声明。main function是所有C+程序的运行的起始点。 不管它是在代码的开头,结尾还是中间,此函数中的代码总是在
13、程序开始运行时第一个被执行。并且,由于同样的原因,所有C+程序都必须有一个main function。main 后面跟了一对圆括号(),表示它是一个函数。C+中所有函数都跟有一对圆括号 (),括号中可以有一些输入参数。如例题中显示,主函数(main function)的内容紧跟在它的声明之后,由花括号 ()括起来。 cout “Hellow World!”; 这个语句在本程序中最重要。 cout 是C+中的标准输出流(通常为控制台,即屏幕),这句话把一串字符串(本例中为”Hello World”)插入输出流(控制台输出)中。cout 在的声明在头文件iostream.h中,所以要想使用cout
14、 必须将该头文件包括在程序开始处。注意这个句子以分号(;)结尾 。分号标示了一个语句的结束,C+的每一个语句都必须以分号结尾。 (C+ 程序员最常犯的错误之一就是忘记在语句末尾写上分号) 。return 0;返回语句(return) 引起主函数 main()执行结束,并将该语句后面所跟代码(在本例中为0) 返回。这是在程序执行没有出现任何错误的情况下最常见的程序结束方式。在后面的例子中你会看到所有C+程序都以类似的语句结束。你可能注意到并不是程序中的所有的行都会被执行。程序中可以有注释行(以/开头),有编译器预处理器的指示行(以#开头),然后有函数的声明(本例中main函数),最后是程序语句(例如调用cout ),最后这些语句行全部被括在主函数的花括号()内。本例中程序被写在不同的行中以方便阅读。其实这并不是必须的。例如,以下程序int main ()cout Hello World ;return 0;也可以被写成:int main () cout Hello World ; return 0; 以上两段程序是完全相同的。在C+中,语句的分隔是以分号(;)为分隔符的。分行写代码只是为了更方便人阅读。以下程序包含更多的语句:/ my second program in C+#include ios