ImageVerifierCode 换一换
格式:DOCX , 页数:172 ,大小:157.90KB ,
资源ID:23519220      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23519220.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++教程.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++教程.docx

1、C+教程C+ 基础教程Beta 版原作:Juan Souli 翻译:Jing Xu英文原版本教程根据Juan Soulie的英文版C+教程翻译并改编。 本版为最新校对版,尚未定稿。如有不明或错误之处,请参考英文原版,并敬请在本站留言指正。版权归作者所有,欢迎链接,请勿转载。本教程对C+语言进行了深入浅出的介绍,从基础知识到ANSI-C+标准的最新功能,内容涵盖了从数组,类等基本概念到多态、模板等高级概念。教程本着实用的原则,每一小节都结合了可以工作的程序实例,以便读者从第一课开始就可以上手实习。本翻译版本对许多C+概念中的关键词保留了中英文对照,以便读者增强理解,并方便日后阅读英文原版教材目录

2、1. 简介 怎样使用本教程 2. C+基础 Basics of C+ 1. C+程序结构 Structure of a program 2. 变量,数据类型,常量 Variables. Data types. Constants 3. 操作符/运算符 Operators 4. 控制台交互 Communication through console 3. 控制结构和函数 Control structures and Functions 1. 控制结构 Control Structures 2. 函数I Functions I 3. 函数II Functions II 4. 高级数据类型 Adva

3、nced Data 1. 数组 Arrays 2. 字符串 Strings of Characters 3. 指针 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

4、Operators. this. 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 Dir

5、ectives 7. C+ 标准函数库 C+ Standard Library 1. 文件的输入输出 Input/Output with files 读者范围本教程面向所有希望学习C+语言的读者。如果读者有其他编程语言背景或计算机相关基本知识可以帮助更好的理解教程内容,但这并非必须条件。对于C语言熟悉的读者可将前三章(1.1 到 3.4)当作复习,因为这部分内容主要介绍C+中的C部分。第四章讲述面向对象编程。第五章主要介绍ANSI-C+标准中的新增的功能。本教程结构教程共分6章,每章分若干小节。你可以直接从主目录进入任意小节,并循每页底部的链接向后浏览。很多小节含有一页例题介绍该章节主要知识点

6、的使用。建议在进入下一章学习之前最好先阅读这些例题,理解每行代码。学习和练习一种编程语言的最好办法是自己修改书中例题程序,设法在程序中增加新的功能。不要不敢修改这些例题程序,这正是学习的方法。兼容性备注ANSI-C+标准近几年来被接受为国际标准。尽管C+语言从二十世纪80年代即存在,ANSI-C+在1997年才被发表。因此很多编译器不支持ANSI-C+中的部分新功能,特别是那些在此标准发表前即被发布的编译器。在本教程中,那些ANSI-C+中新增的而老一代C+编译器大多不支持概念将备用如下标志标出:new in ANSI C+同样对于C和C+在实现上有明显不同的概念,将备用如下标志标出:diff

7、erent implementation in C and C+编译器本教程中所有例题程序均为console程序(控制台程序)。此类程序以文本形式与用户交换信息,显示结果。所有C+编译器均支持console程序的编译。要了解更多关于如何编译的说明,请查询你的编译器用户使用手册。.1 C+程序结构 (Structure of a program)下面我们从一个最简单的程序入手看一个C+程序的组成结构。/ my first program in C+#include using namespace std;int main() cout “Hello World!”; return 0;Hello

8、 World! 上面左侧显示了我们的第一个程序的源代码,代码文件名称为hellowworld.cpp。右边显示了程序被编译执行后的输出结果。编辑和编译一个程序的方法取决于你用的是什么编译器,根据它是否有图形化的界面及版本的不同,编译方法也有可能不同,具体请参照你所使用的编译器的使用说明。以上程序是多数初学者学会写的第一个程序,它的运行结果是在屏幕上打出”Hello World!”这句话。 虽然它可能是C+可写出的最简单的程序之一,但其中已经包含了每一个C+程序的基本组成结构。 下面我们就逐个分析其组成结构的每一部分:/ my first program in C+这是注释行。所有以两个斜线符号

9、(/)开始的程序行都被认为是注释行,这些注释行是程序员写在程序源代码内,用来对程序作简单解释或描述的, 对程序本身的运行不会产生影响。在本例中, 这行注释对本程序是什么做了一个简要的描述。# include 以#标志开始的句子是预处理器的指示语句。它们不是可执行代码,只是对编译器作出指示。在本例中这个句子# include 告诉编译器的预处理器将输入输出流的标准头文件(iostream.h)包括在本程序中。这个头文件包括了C+中定义的基本标准输入-输出程序库的声明。此处它被包括进来是因为在本程序的后面部分中将用到它的功能。using namespace std;C+标准函数库的所有元素都被声明

10、在一个名空间中,这就是std名空间。因此为了能够访问它的功能,我们用这条语句来表达我们将使用标准名空间中定义的元素。这条语句在使用标准函数库的C+程序中频繁出现,本教程中大部分代码例子中也将用到它。int main()这一行为主函数(main function)的起始声明。main function是所有C+程序的运行的起始点。 不管它是在代码的开头,结尾还是中间 此函数中的代码总是在程序开始运行时第一个被执行。并且,由于同样的原因,所有C+程序都必须有一个main function。main 后面跟了一对圆括号(),表示它是一个函数。C+中所有函数都跟有一对圆括号 (),括号中可以有一些输入

11、参数。如例题中显示,主函数(main function)的内容紧跟在它的声明之后,由花括号 ()括起来。 cout “Hellow World!”; 这个语句在本程序中最重要。 cout 是C+中的标准输出流(通常为控制台,即屏幕),这句话把一串字符串(本例中为”Hello World”)插入输出流(控制台输出)中。cout 在的声明在头文件iostream.h中,所以要想使用cout 必须将该头文件包括在程序开始处。注意这个句子以分号(;)结尾 。分号标示了一个语句的结束,C+的每一个语句都必须以分号结尾。 (C+ 程序员最常犯的错误之一就是忘记在语句末尾写上分号) 。return 0;返回

12、语句(return) 引起主函数 main()执行结束,并将该语句后面所跟代码(在本例中为0) 返回。这是在程序执行没有出现任何错误的情况下最常见的程序结束方式。在后面的例子中你会看到所有C+程序都以类似的语句结束。你可能注意到并不是程序中的所有的行都会被执行。程序中可以有注释行(以/开头),有编译器预处理器的指示行(以#开头),然后有函数的声明(本例中main函数),最后是程序语句(例如调用cout ),最后这些语句行全部被括在主函数的花括号()内。本例中程序被写在不同的行中以方便阅读。其实这并不是必须的。例如,以下程序int main ()cout Hello World ;return

13、0;也可以被写成:int main () cout Hello World ; return 0; 以上两段程序是完全相同的。在C+中,语句的分隔是以分号(;)为分隔符的。分行写代码只是为了更方便人阅读。以下程序包含更多的语句:/ my second program in C+#include int main ()cout Hello World! ;cout Im a C+ program;return 0; Hello World! Im a C+ program 在这个例子中,我们在两个不同的语句中调用了cout 函数两次。再一次说明分行写程序代码只是为了我们阅读方便,因为这个main

14、 函数也可以被写为以下形式而没有任何问题:int main () cout Hello World! ; cout Im to C+ program ; return 0; 为方便起见,我们也可以把代码分为更多的行来写:int main ()cout Hello World!;cout Im a C+ program;return 0;它的运行结果将和上面的例子完全一样。这个规则对预处理器指示行(以#号开始的行)并不适用,因为它们并不是真正的语句。它们由预处理器读取并忽略,并不会生成任何代码。因此他们每一个必须单独成行,末尾不需要分号(;)注释 (Comments)注释(comments)是源

15、代码的一部分,但它们会被编译器忽略。它们不会生成任何执行代码。 使用注释的目的只是使程序员可以在源程序中插入一些说明解释性的内容。 C+ 支持两中插入注释的方法: / line comment/* block comment */ 第一种方法为行注释,它告诉编译器忽略从/开始至本行结束的任何内容。第二种为块注释(段注释),告诉编译器忽略在/*符号和*/符号之间的所有内容,可能包含多行内容。在以下我们的第二个程序中,我们插入了更多的注释。/* my second program in C+with more comments */#include int main ()cout Hello Wo

16、rld! ; / says Hello World!cout Im a C+ program; / says Im a C+ programreturn 0; Hello World! Im a C+ program 如果你在源程序中插入了注释而没有用/符号或/*和*/符号,编译器会把它们当成C+的语句,那么在编译时就会出现一个或多个错误信息。.2 变量,数据类型,常量 (Variables. Data types. Constants)你可能觉得这个“Hellow World”程序用处不大。我们写了好几行代码,编译,然后执行生成的程序只是为了在屏幕上看到一句话。的确,我们直接在屏幕上打出这句

17、话会更快。但是编程并不仅限于在屏幕上打出文字这么简单的工作。为了能够进一步写出可以执行更有用的任务的程序,我们需要引入变量(variable)这个的概念。让我们设想这样一个例子,我要求你在脑子里记住5这个数字,然后再记住2这个数字。你已经存储了两个数值在你的记忆里。现在我要求你在我说的第一个数值上加1,你应该保留6 (即5+1)和2在你的记忆里。现在如果我们将两数相减可以得到结果4。所有这些你在脑子里做的事情与计算机用两个变量可以做的事情非常相似。同样的处理过程用C+来表示可以写成下面一段代码:a = 5;b = 2;a = a + 1;result = a - b;很明显这是一个很简单的例子

18、,因为我们只用了两个小的整数数值。但是想一想你的电脑可以同时存储成千上万这样的数值,并进行复杂的数学运算。因此,我们可以将变量(variable)定义为内存的一部分,用以存储一个确定的值。每一个变量 (variable)需要一个标识,以便将它与其他变量相区别,例如,在前面的代码中,变量标识是a, b, 和result。我们可以给变量起任何名字,只要它们是有效的标识符。标识(Identifiers)有效标识由字母(letter),数字(digits)和下划线 ( _ )组成。标识的长度没有限制,但是有些编译器只取前32个字符(剩下的字符会被忽略)。空格(spaces),标点(punctuatio

19、n marks)和符号(symbols) 都不可以出现在标识中。 只有字母(letters),数字(digits) 和下划线(_)是合法的。并且变量标识必须以字母开头。标识也可能以下划线(_)开头,但这种标识通常是保留给为外部连接用的。标识不可以以数字开头。必须注意的另一条规则是当你给变量起名字时不可以和C+语言的关键字或你所使用的编译器的特殊关键字同名,因为这样与这些关键字产生混淆。例如,以下列出标准保留关键字,他们不允许被用作变量标识名称:asm, auto, bool, break, case, catch, char, class, const, const_cast, continu

20、e, default, delete, do, double, dynamic_cast, else, enum, explicit, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, operator, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_cast, struct, switch, template,

21、 this, throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t, while 另外,不要使用一些操作符的替代表示作为变量标识,因为在某些环境中它们可能被用作保留词:and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq 你的编译器还可能包含一些特殊保留词,例如许多生成16位码的编译器(比如一些DOS编译器)把 far, huge和 near也作为关键字。非常

22、重要:C+语言是“ 大小写敏感”(“case sensitive”) 的,即同样的名字字母大小写不同代表不同的变量标识。因此,例如变量RESULT,变量result和变量Result分别表示三个不同的变量标识.基本数据类型(Fundamental Data types)编程时我们将变量存储在计算机的内存中,但是计算机要知道我们要用这些变量存储什么样的值,因为一个简单的数值,一个字符,或一个巨大的数值在内存所占用的空间是不一样的。计算机的内存是以字节(byte)为单位组织的。一个字节(byte)是我们在C+中能够操作的最小的内存单位。一个字节(byte)可以存储相对较小数据:一个单个的字符或一个

23、小整数(通常为一个0到255之间的整数)。但是计算机可以同时操作处理由多个字节组成复杂数据类型,比如长整数(long integers)和小数(decimals)。以下列表总结了现有的C+基本数据类型,以及每一类型所能存储的数据范围:数据类型(DATA TYPES)名称字节数描述范围char1字符(character)或整数(integer ), 8位(bits)长有符号(signed): -128 到 127无符号(unsigned): 0 到 255short int (short)2短整数(integer )16位(bits)长有符号(signed): -32768 到 32767无符号

24、(unsigned): 0 到 65535long int (long)4长整数(integer )32位(bits)长有符号(signed):-2147483648 到 2147483647无符号(unsigned): 0 到 4294967295int4整数(integer)有符号(signed): -2147483648 到 2147483647无符号(unsigned): 0 到 4294967295float4浮点数(floating point number)3.4e + / - 38 (7 个数字(7digits)double8双精度浮点数(double precision fl

25、oating point number)1.7e + / - 308 (15 digits)long double8长双精度浮点数(long double precision floating point number)1.7e + / - 308 (15 digits)bool1布尔Boolean值。它只能是真(true)或假(false)两值之一。true 或 falsewchar_t2宽字符(Wide character) 。这是为存储两字节(2 bytes) 长的国际字符而设计的类型。一个宽字符(1 wide characters)* 字节数一列和范围一列可能根据程序编译和运行的系统不

26、同而有所不同。这里列出的数值是多数32位系统的常用数据。对于其他系统,通常的说法是整型(int)具有根据系统结构建议的自然长度(即一个字one word的长度),而4中整型数据char, short, int, long的长度必须是递增的,也就是说按顺序每一类型必须大于等于其前面一个类型的长度。同样的规则也适用于浮点数类型float, double和 long double,也是按递增顺序。除以上列出的基本数据类型外,还有指针(pointer)和void 参数表示类型,我们将在后面看到。变量的声明(Declaration of variables)在C+中要使用一个变量必须先声明(declar

27、e)该变量的数据类型。声明一个新变量的语法是写出数据类型标识符(例如int, short, float.) 后面跟一个有效的变量标识名称。例如:int a;float mynumber;以上两个均为有效的变量声明(variable declaration)。第一个声明一个标识为a 的整型变量(int variable),第二个声明一个标识为mynumber 的浮点型变量(float variable)。声明之后,我们就可以在后面的程序中使用变量a和 mynumber 了。如果你需要声明多个同一类型的变量,你可以将它们缩写在同一行声明中,在标识之间用逗号(comma) 分隔。例如:int a,

28、b, c;以上语句同时定义了a、b、c 3个整型变量,它与下面的写法完全等同:int a;int b;int c;整型数据类型 (char, short, long 和 int) 可以是有符号的(signed)或无符号的(unsigned ),这取决于我们需要表示的数据范围。有符号类型(signed)可以表示正数和负数,而无符号类型(unsigned)只能表示正数和0。在定义一个整型数据变量时可以在数据类型前面加关键字 signed 或 unsigned 来声明数据的符号类型。例如:unsigned short NumberOfSons;signed int MyAccountBalance;

29、如果我们没有特别写出signed或 unsigned,变量默认为signed,因此以上第二个声明我们也可以写成:int MyAccountBalance;因为以上两种表示方式意义完全一样,因此我们在源程序通常省略关键字signed 。唯一的例外是字符型(char)变量,这种变量独立存在,与signed char 和 unsigned char型均不相同。short 和 long 可以被单独用来表示整型基本数据类型,short 相当于 short int, long 相当于 long int。也就是说 short year; 和 short int year; 两种声明是等价的。最后,signe

30、d 和 unsigned 也可以被单独用来表示简单类型,意思分别同signed int 和 unsigned int 相同,即以下两种声明互相等同:unsigned MyBirthYear;unsigned int MyBirthYear;下面我们就用C+代码来解决在这一节开头提到的记忆问题,来看一下变量定义是如何在程序中起作用的。/ operating with variables#include using namespace std;int main () / declaring variables: int a, b; int result; / process: a = 5; b = 2; a = a + 1; result = a - b; / print out the result: cout result; / terminate the program: return 0;4如果以上

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1