C++ 达内科技内部资料ppt课件_第1页
C++ 达内科技内部资料ppt课件_第2页
C++ 达内科技内部资料ppt课件_第3页
C++ 达内科技内部资料ppt课件_第4页
C++ 达内科技内部资料ppt课件_第5页
已阅读5页,还剩500页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

TheC ProgrammingLanguageChapter1 C ProgramminginUNIX 课程介绍C 语法基础面向对象程序设计的概念大量的编程实践目标熟练掌握C 语法具有面向对象程序设计的概念与能力能熟练阅读复杂的C 程序源代码能独立的设计与完成面向对象的C 程序 课程内容简介1 C 语言基础保留字变量 常量表达式语句函数程序的结构数据结构与算法数组 指针 引用 结构 链表与栈 课程内容简介2 C 面向对象编程类构造函数与析构函数静态成员与友员函数重载继承与多态I O流模板异常 程序设计语言介绍1 Whatcomputerunderstand bitsAssemblerLanguageLimitedstructureGlobalscopeMachinecodePrimitiveHigh LevelLanguageFunctiondecompositionDataseparationHighlevelstructure 程序设计语言介绍2 BlockStructuredLanguageEncapsulationFlexibledatascopingModularizationObject OrientedLanguageInheritancePolymorphismAbstractdatatypes C 程序设计语言 1972 AT T BellLab DennisRitche Clanguage1980 BellLab BjarneStroustrup Cextension 1983 C named1997 ANSI AmericanNationalStandardsInstitute C standardC WhatC willwelearninthiscourse StandardC ANSIC ismorescalabletodifferentplatformsuchasUnix Microsoftwindows Mac ThestandardC librarygotsupportedbymostofindustryproviders You dbetterdon tknowC WewilltrytoavoidClibraryandCsyntax AC filecanbewith cc cp cppextensions 为什么选标准C ANSI规范了C 的标准 使之具有高度的可移植性 程序能够运行得很快 可直接操作系统资源 保持机器层次的实现细节 不要求图形环境 对系统要求相对较低 易于解决与旧工程的接口以及在数据库 存储和性能方面的技术限制 C 是一种面向对象的多范型语言 可以将面向对象的模型映射成为C 的结构 它为开发者设计和编写一个解决方案提供了一定的选择范围 C 的优点 Supportsdataabstractionandobject orientedprogrammingContainsallexistingfeaturesofC makingthemigrationfromCtoC relativelyeasyIsasportableandefficientasCCanbelinkedtoexistingClibrariesandfunctionsProvidesstrongstatic typecheckingIsageneral purposelanguage 程序员应该具备的计算机知识1 操作系统与应用程序运行环境与运行机制系统与命令运行环境与命令行参数进程栈堆 BinaryandHexadecimal Binary 01011000Decimal 88Hexadecimal 0 x581byte 8bits 程序员应该具备的计算机知识2 编辑器编译器编译器的功能解释执行与编译执行的差别熟悉自己常用的编译器 查错能力连接器库与库函数系统调用 软件开发周期 SoftwareLifecycle 开发测试维护更新 熟悉你的环境 可用的UNIX服务器192 168 0 21192 168 0 23192 168 0 26Telnet命令介绍 telnet192 168 0 21Login useyourregistereduseraccount Password typeinyourpassword 创建自己的学习帐号 login tarenaPassword tarena欢迎使用达内科技 中国 公司开放实验室的服务 WelcometotheOpenLabofTarenaTechnologiesInc Cananda 请按照以下提示创建您的用户帐号 Pleasefollowthestepstocreateyourownaccount 请输入您要注册的帐号 Pleaseenteryournewaccountname XXXXXXXX 请输入您的E Mail地址 Pleaseenteryouremailaddress XXX YYY ZZZ 用自己的帐号登录UNIX服务器 Escapecharacteris SunOS5 8login XXXXXXXChooseanewpassword Newpassword 程序员经常用到的UNIX命令1 简单的文件维护与管理ls cd mkdir rm cp mv cat more源程序的编写vi ed编译与连接gcc g ld运行与调试adb gdb 程序员经常用到的UNIX命令2 查看运行状态 ps ef grepaaaa txt aaaisthecharsinthefilenamea txt prstat ctrlDtoexit killpid pidisaprocessid 第一个UNIX上的C 程序 用vi编辑器来编写hello cc源程序 vihello cc thefirstC program includeusingnamespacestd mainfunctionintmain cout Helloworld endl cout ThisismyfirstC program n g 的常用参数 c编译成目标文件 o o指定输出文件名 输出文件名跟在 o后面 用空格分隔 如果不使用这个选项 缺省的输出文件名为a out g产生有调试信息的可执行文件 w不产生警告信息 l连接指定的库文件 L指定库文件的路径 i要包含的头文件 I头文件的路径 E显示预处理后的程序文件到屏幕上 可以用 o指定输出到文件 S产生汇编程序如果没有c E S就会生成可执行文件 编译hello cc g chello cc ls 连接hello o g ohellohello o ls g hello o ls 运行hello程序 hello a out C 程序的基本结构1 thefirstC program includeusingnamespacestd mainfunctionintmain cout Helloworld endl cout ThisismyfirstC program n C 程序的基本结构2 include与 include Namespace 提供了一个全局标识符和全局变量所在的作用域 intmain 注释函数函数的调用cout语句 头文件 include语句 include与 include 使用 includeusingnamespacestd 少用 include Main函数 main函数的作用StandardC main 格式 intmain return0 thedefaultreturnvalueis0 注释 C 的注释 基本的输出语句 cout 练习程序hi cc includeusingnamespacestd intmain cout HiJian endl cout Haveaniceday endl return0 练习程序myself cc 编写一个程序 打印出自己的 姓名性别年龄家庭住址电话号码爱好每一条信息输出为一行 在hi cc中使用字符串 includeusingnamespacestd intmain charname John cout Hi name endl cout Haveaniceday endl return0 字符与字符串类型 字符 字符串 字符数组charch A charstr1 20 Helloworld charstr2 Haveaniceday 不同的main 格式 命令行参数 ls l orls al vihello cc在程序中使用命令行参数intmain intargc char argv 命令行参数程序cmdline cc includeusingnamespacestd intmain intargc char argv for inti 0 i argc i cout argv i argv i endl 使用命令行参数的hi cc 使用命令行参数 重新编写练习程序cmdline cc hiJohn hiLisa hi G Bush 基本输入语句 cin语句使用cin语句的hi cc重写hi cc程序 不带命令行参数程序自动提示用户输入字符串来获得姓名与年龄 练习程序age cc includeusingnamespacestd intmain unsignedintage charname 50 cout name cout age cout yournameis name endl cout Youwere age 2 yearsoldtwoyearsago n 条件语句 if语句if else语句不同if的等价与不等价形式 charch cin ch if ch y notethedifference if ch y cout good endl elsecout tryagain endl 练习程序grade cc Thisisyourassignment Q A ThankYou TheC ProgrammingLanguageChapter2 字符集 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 空白 C 的保留字 auto bool break case catch char class const const cast continue default delete do double else enum extern false float for friend goto if inline int long new operator private protected public return short signed sizeof static struct switch template this throw true try typedef union unsigned virtual void while 常量与变量 内存程序的内存使用常量变量动态内存变量的类型 C 变量名 变量名 identifier 第一个字符必须是字母或下划线只能使用字母 数字 或下划线中间不能有空格不能是保留字 不能与全局函数和数据类型同名C 严格区分大小写 UNIX中 使用易懂的变量名 一般是相关的英语单词或者缩写 长度一般不要超过32个字符不单是变量名 所有需要自己起名的地方都需要遵守这样的规则 C 变量 C 是强类型语言每一个变量都有确定的类型 且保持不变基本数据类型整型 int 字符型 char 实型 float double 逻辑型 bool standardc newfeature 基本数据类型1 char unsignedchar signedchar int unsignedint signedint shortint unsignedshortint signedshortint longint signedlongint unsignedlongint float double longdouble boolvoid enum struct union array pointer class 基本数据类型2 实型数据 float double 无unsigned ThestandardC newfeatures bool 其值必为关键字true或false四个转型运算子 static cast compilingtimetocheckdatatype primitive const cast onlyforconstantdatatypeconverting dynamic cast usuallyfortop downdatatypecast reinterpret cast moregeneralcastforalldatatypes 到多态的时候再详细讲 变量与数据类型 C 是强类型语言先声明 后使用C 编译器对变量声明的处理 一个使用变量的程序例子 includeusingnamespacestd intmain inti i 5 cout i i endl i 8 cout i i endl return0 另一个使用变量的例子程序 includeusingnamespacestd intmain i 5 seewhathappens cout i i endl i 8 cout i i endl return0 inti 变量与变量的size 变量都有类型变量在内存中的大小inti doubled cout sizeofiis sizeof i endl cout sizeofintis sizeof int endl cout sizeofdis sizeof d endl cout sizeofdoubleis sizeof double endl 程序size cc 编写一个程序 打印出所有C 基本类型的大小 includeusingnamespacestd intmain cout sizeofcharis sizeof char endl cout sizeofunsignedcharis sizeof unsignedchar endl cout sizeofsignedcharis sizeof signedchar endl cout sizeofintis sizeof int endl cout sizeofunsignedintis sizeof unsignedint endl cout sizeofsignedintis sizeof signedint endl cout sizeofshortintis sizeof shortint endl 变量的取值范围 变量的类型与值的范围常用类型的取值范围 常量 常量与常量的数据类型constdoublepi 3 14 const限定符 限定一个常量或者函数方便编译器来检测非法的修改操作 运算符 运算符 结合性优先级 seetable3 1inpage35intherecommendedbook1 运算符的使用 if demo 2 与if demo 2 if 2 demo 左值与右值 if demo 2 与if demo 2 运算符的优先级 inta 8 b 4 c 5 cout a b b c cout a b b c 变量的赋值 赋值表达式变量的初始化一次声明多个变量声明并初始化变量 无符号类型的值 无符号整数类型的回绕unsignedshortintsnum snum 65535 cout snum snum endl snum snum 1 cout snum snum endl 有符号类型的值 有符号整数类型的回绕intinum 2147483647 cout inum inum endl inum inum 1 cout inum inum endl 常用类型的取值范围 常用类型的取值范围inti 65535 intj 65535 cout i j 9 endl 练习 为表示如下数据 应该使用什么类型的变量 年龄姓名工资电话号码身份证号码西三环到东三环的距离 练习程序bin cc includeusingnamespacestd intmain inta 10 cout a unsignedintr intk unsignedintj charstr 33 memset str 0 33 str 32 0 r a inti 32 练习程序bin cc do j r r r 2 k j r 2 if k str i 1 elsestr i 0 while r 0 cout str endl 枚举类型 enumcolor RED GREEN BLUE WHITE BLACK colortvColor GREEN Enumconstantvariabledoesnotneedmemoryallocation ThedefaultvalueinEnumis 0 1 2 3 4 Specifytheelementvalues enumcolor RED 100 GREEN 200 BLUE WHITE 300 BLACK 400 表达式 左值与右值floata a 5 2 a 求值顺序特殊表达式 逗号表达式 inta b c a 1 b a 2 c b 3 表达式的求值顺序 求值顺序副作用 表达式的左值与右值 inta b c d inte a 1 b a c a b d c 5 a 1 b a c a b d c 5 8 e a 0 b a 5 b 2 a 0 b a 5 b 2 9 ohps youmaygetproblem 练习程序comma cc includeusingnamespacestd intmain inta b c d inte a 1 b a c a b d c 5 a 1 b a c a b d c 5 8 cout d d endl 程序语句 控制语句表达式语句空语句语句块 控制语句 条件判断语句if if else 循环控制语句while do while for 多路选择语句switch case 循环语句 for语句do while语句while语句break语句continue语句 分支语句 switch语句switch ss case1 break case2 break default break 循环语句程序例子chengFa cc 编写一个程序 打印出乘法口诀表分别使用for语句 do while语句 while语句来实现 Theoutputis 1x1 11x2 2 2x2 41x3 3 2x3 6 3x3 91x4 4 2x4 8 3x4 12 4x4 161x5 5 2x5 10 3x5 15 4x5 20 5x5 251x6 6 2x6 12 3x6 18 4x6 24 5x6 30 6x6 361x7 7 2x7 14 3x7 21 4x7 28 5x7 35 6x7 42 7x7 491x8 8 2x8 16 3x8 24 4x8 32 5x8 40 6x8 48 7x8 56 8x8 641x9 9 2x9 18 3x9 27 4x9 36 5x9 45 6x9 54 7x9 63 8x9 72 9x9 81 练习程序year cc Thisisyourassignment 判断输入的年份是否是闰年 Q A ThankYou TheC ProgrammingLanguageChapter3 函数 什么是函数函数的基本要素参数返回值函数的声明与定义形参与值参函数的调用 定义函数 函数名 return 函数定义的例子 includeusingnamespacestd voiddisp charstr cout Thisisyourstring str endl intmain charcourse1 C charcourse2 Java charcourse3 Oracle charcourse4 UNIX disp course1 disp course2 函数声明 函数名 voiddisp char floataverage int int floataverage inta intb 为什么需要函数声明 调用函数 函数的形参函数的调用过程填入值参获得返回值 栈的技术简介 栈的工作原理函数的调用与栈 栈的原理 i f1 j f2 cout i endl cout j endl cout f1 endl cout f2 endl includeusingnamespacestd intf1 intf2 intmain inti j i f1 j f2 cout i endl cout j endl intf1 intn 5000 returnn intf2 intn returnn 变量的作用域 局部变量与全局变量 默认参数 函数的形参可以指定默认值必须从右到左指定参数的默认值函数在调用时 是按从左到右的顺序在匹配参数 使用默认参数的函数例子 enumSex MALE FEMALE voiddisp char name Sexgender MALE 如果在函数声明中指定了默认值 则在函数定义时不能再指定 内联函数 提高程序运行效率内联函数的定义inlineintisnumber charch return ch 0 必须先定义 不支持函数原形 声明 不支持结构控制语句 递归函数 一个函数调用它自己如何正确的递归必须有结束的条件并且该条件一定能够满足 使用与不使用递归的例子程序 编写一个程序bigsum cc 使用一个函数来求 n的值 includeusingnamespacestd intbigsum inta if a 0 return0 returna bigsum a 1 intmain intn cout n intm bigsum n cout Thesumis m cout endl 练习程序nbang cc 使用递归函数 编写一个程序来求n 的值 Thisisyourassignment 函数的重载 C 中的函数可以重载什么是函数的重载 对于在不同类型上作不同运算而又用同样的名字的情况 称为重载 函数重载的注意事项 重载函数至少在参数个数 参数类型 或参数顺序上有所不同 函数重载的例子 求两个数的平均值doubleAverage int int doubleAverage float float doubleAverage double double doubleAverage long long 思考题 在一个程序中定义了这两个函数会怎样 intArea intwidth intlength 1 intArea intsize Area ccsourcecode includeusingnamespacestd intArea intwidth intlength 1 returnwidth length intArea intsize intArea intsize intleng isnotallowed returnsize size intmain cout Area 3 5 endl setlength 5instead cout Area 10 endl isthisok 函数参数的const限定 可以使用const限定词来修饰形参以保护实参不被修改 const形参的意义 includeusingnamespacestd voiddisp constintI cout I endl I 100 thinkaboutthis intmain disp 50 程序的结构 多文件结构外部变量与内部变量变量的作用域与可见性头文件静态全局变量静态函数 多文件结构 按不同的功能模块将程序的源代码划分在多个文件中不同源文件之间可以共享变量声明与类型定义C 多文件的划分原则 外部变量与内部变量 存储类 auto extern register static volatile 什么是外部变量什么是内部变量 变量的作用域与可见性 局部变量的作用域静态局部变量的作用域全局变量的作用域外部变量的作用域常量的作用域 头文件 头文件的作用如何组织头文件头文件的使用编译选项 静态全局变量 何为静态全局变量只在本源文件中可用 静态函数 定义静态函数只在本源文件中可用 改写bigsum cc与nbang cc程序 将bigsum cc与nbang cc改写成多文件结构 每个文件只能有一个函数 改写bigsum cc与nbang cc程序 分别将前面的函数改为静态函数 再次编译并运行所有的程序Thisisyourassignment 练习程序hash cc includeusingnamespacestd intmain charline 100 cout line intch 0 for inti 0 i strlen line i ch line i cout Thehashofyourstringis ch endl 练习程序mywc cc 输入一行文字 统计单词的个数 为了输入的时候能包含空格 程序使用了getline函数 includeusingnamespacestd intmain cout Pleaseenteraline endl charline 120 intcnt 0 cin getline line 120 inti 0 练习程序mywc cc while i strlen line if line i cnt while line i Q A ThankYou TheC ProgrammingLanguageChapter4 复杂数据类型 数组结构指针 数组1 由若干个同类型变量组成的集合数组的声明数组名 元素个数 下标是数组元素到开始的偏移量数组下标从0开始charbuf 4 数组2 数组在声明时 元素个数必须是常量或常量表达式charbuf 10 intI charbuf I intI 10 charbuf I constinti 10 charbuf i charbuf i 1 数组3 如果数组的声明带有初始化 可以直接对整个数组赋值访问数组元素 使用下标操作符 intiA 10 iA 0 0 iA 1 1 intI 0 I iA 0 iA 1 数组的初始化 在声明的时候就初始化intiA 5 0 1 2 3 4 intiB 1 2 3 使用赋值语句初始化数组iA 0 0 iA 1 1 数组的边界问题intiC 5 iC 10 100 runtime Question doesC compilerhavearrayboundchecking 数组程序例子 编写一个程序 从键盘接受一个字符串 将该字符串颠倒顺序 然后打印出来 练习程序findmax cc includeusingnamespacestd intmain intiA 103 5 68 115 32 23 66 599 38 444 for inti 0 i 10 i for intj 0 j i j inttemp if iA i iA j if iA i iA j temp iA i iA i iA j iA j temp cout ThebigNumberis iA 9 endl 多维数组 二维数组与多维数组 intiA 5 10 intiB 2 3 1 2 3 4 5 6 intiC 2 4 6 多维数组的初始化仅有第一个维数可以省去intiB 3 1 2 3 4 5 6 7 8 9 数组练习程序mdim cc includeusingnamespacestd intmaximum int 4 int int intmain intsg 3 4 68 77 73 86 87 96 78 89 90 70 81 86 cout themaxgradeis maximum sg 3 4 endl intmaximum intgrade 4 introw intcol intmax grade 0 0 for inti 0 imax max grade i j returnmax 结构1 将不同类型的相关数据信息组织在一起是用户自定义的类型需要先声明类型的定义才能使用结构与数组的区别数组只是同一个数据类型的聚集数组本身不是一个新的数据类型 结构2 struct 结构变量名 structPerson charname 20 unsignedlongid floatsalary charaddress 200 p1 p2 结构的赋值1 通过取成员操作 来引用结构变量的元素Personp1 G WBush 1000010 1 5 ZhongGuanChun Beijing China strcpy p1 name G WBush p1 id 1000010 p1 salary 1 5 strcpy p1 address ZhongGuanChun Beijing China 结构的赋值2 结构赋值的例子Personp1 G WBush 1000010 1 5 ZhongGuanChun Beijing China Personp2 p1 结构的存储模式1 每一个成员都有自己的存储空间对每一个成员的操作都是独立的 各元素间不会相互影响 结构的存储模式2 includeusingnamespacestd structPerson charname 20 unsignedlongid floatsalary intmain Personp1 ZhangWeilong 1000101 32 cout Whatarepointersfor Accessingarrayelements Passingargumentstoafunctionwhenthefunctionneedstomodifytheoriginalargument Passingarraysandstringstofunctions Obtainingmemoryfromthesystem Creatingdatastructuressuchaslinkedlists Pointer address variable inttheVariable 5 int pPointer 5 2000 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 address theVariable pPointer 指针1 编译器为变量与常量分配存储空间任何存储空间都用地址来表示任何变量 常量都有地址一个变量的地址也是一个有意义的值变量地址也可进行运算这个值也可以用另一个变量来存储这 另一个 变量的类型就是指针类型 指针2 指针就是用来存储其他变量的地址的变量指针变量自己也有地址指针是有类型的指针的类型要跟它所指向的变量的类型一致整数指针 浮点数指针 理解指针的例子程序addr cc 定义下面的变量 分别输出它们的值与他们的存储地址intiVal1 1 intiVal2 2 doubledVal1 1 1 doubledVal2 2 2 指针的定义 int ip constint icp char str NULL指针 指针的操作 取地址操作符 指针的类型 整数型变量intiVal iVal 10 整数指针性变量int iPtr iPtr Anydatatypeinc canbeapointertype 指针的使用 指针在使用前必须初始化指针的类型决定了指针所参与的运算指针只能进行加减法运算 理解指针的例子程序ptracc cc includeusingnamespacestd intmain intvar1 11 intvar2 22 int ptr ptr 理解指针的例子程序ptracc cc Var1 11 Var2 22 Var1 11 Var2 22 ptris11 ptris22 ptr ptr 指针与数组 数组的本质就是数组里所有变量的首地址数组的下标操作就是针对地址 指针与数组的例子程序ptr cc 分别用数组的方式与指针的方式来操作intiv 5 分别给他们赋初值并输出他们的值与地址 includeusingnamespacestd intj intiv 5 1 2 3 4 5 intmain inta 800 inti intb 900 int ptr 指针与数组的例子程序ptr cc cout 结构指针 结构是一种数据类型结构类型也有指针结构变量vs结构指针变量结构指针变量的操作结构变量用 操作来存取成员结构的指针用 操作来存取成员 结构数组 数组的元素是某一个结构类型structPerson charname 20 unsignedlongid floatsalary charaddress 200 PersonallPeople 100 结构中的数组元素 结构中的某个元素是数组类型structPerson charname 20 unsignedlongid floatsalary charaddress 200 PersonJack Jack 2L 8000 00 Toronto 指针作形参 利用指针在函数中传递参数 程序swap1 cc includeusingnamespacestd voidswap int int intmain inta 3 b 8 cout a a b b endl swap a b cout afterswapping n cout a a b b endl voidswap intx inty inttemp x x y y temp 程序swap2 cc includeusingnamespacestd voidswap int int intmain inta 3 b 8 cout a a b b endl swap 练习程序date cc Thisisyourassignment 要求用结构 指针 Q A ThankYou TheC ProgrammingLanguageChapter5 内存管理与引用 C 的内存管理引用 使用动态内存 内存的申请与释放 堆与内存管理 堆空间简介堆空间的管理new delete New操作 int ip ip newint float fp fp newfloat int ipA newint 5 int pA 5 for intj 0 j 5 j pA j newint 10 Delete操作 deleteip deletefp delete ipA for intj 0 j 5 j delete pA j 含指针的结构变量的赋值 如果结构中含有指针成员 使用了动态空间 通过指针传递参数 函数的形参类型可以是指针通过指针来传递参数 练习程序ptrsort cc includeusingnamespacestd intmain voidbsort int int constintN 10 intdata N 37 84 62 91 11 65 57 28 19 49 int arr newint N for inti 0 i N i arr i data i bsort arr N for intj 0 j N j cout arr j cout endl delete arr 练习程序ptrsort cc voidbsort int ptr intn voidorder int int intj k for intj 0 j numb2 inttemp numb1 numb1 numb2 numb2 temp 危险的指针用法 使用NULL指针的内容使用没有初始化的指针变量使用已经被delete的指针内容函数返回局部变量的地址由函数申请的堆空间 而由调用者来释放 函数指针 调用一个函数函数都有地址 存放在内存的代码区 code 函数指针函数指针指向代码区中的某个函数 函数指针的声明int func chara charb int func chara charb howaboutthisone 函数指针 funcisapointerthatpointstoafunction Example intfn1 chara charb int fn2 charx chary intfn3 inta int fp1 chara charb int fp2 ints fp1 fn1 okfp1 fn2 errorfp2 fn3 okfp2 fp1 errorfp1 fn2 a b error fp1 a b ok 函数指针funcptr cc includeusingnamespacestd intswap int a int b intt t a a b b t intmain inti 100 intj 200 intm 300 intn 400 cout i i endl 函数指针funcptr cc cout j j endl swap endoffuncptr cc 指针的指针 可以存在多层的指针intiNum int ptr int pptr void指针 void ptr const与指针 普通指针 指向的对象的值可以改变 指针的值也可改变int p 常量指针 指针可以指向不同的对象 但其指向的对象的值不能变constint p 指针常量 指针本身是常量 只能指向固定的对象 但其指向的对象的值可改变int constp 必须初始化常量指针指向常量constint constp 必须初始化 引用 引用是一个变量的别名引用的声明intiVal int引用的使用声明的时候就必须初始化引用不能重新赋值 不能重新绑定为另一个新对象的别名 引用的例子程序myRef cc includeusingnamespacestd intmain intiVal 100 cout iVal iVal endl cout 引用的重新赋值myRef2 cc 为引用重新赋值intiA int 通过引用来传递参数 函数的形参可以是引用通过引用来传递参数 引用作为函数的参数ref1 cc includeusingnamespacestd voiddisp int 使用引用的swap cc程序 includeusingnamespacestd voidswap int 函数返回一个类型的引用 函数可以返回任何类型的引用如果返回的引用对应于一个局部变量 函数返回引用ref3 cc 指出下列程序的输出结果分别是什么 includeusingnamespacestd int 堆中指针变量的引用testDelete cc 看看下列程序有无问题 includeusingnamespacestd int 如何释放堆中的空间 int p 引用的使用 尽量使用引用来传递参数尽量使用const来保护引用尽量使用引用来代替指针危险的引用方法返回一个局部变量的引用 Q A ThankYou TheC ProgrammingLanguageChapter6 面向对象的C 编程 类构造函数与析构函数类成员的屏蔽与作用域面向对象的程序设计方法 新的类型 类一个类似于结构的类型类的声明class类名 结构的定义 structPerson charname 30 unsignedintage charaddress 100 floatsalary 结构的操作1 voidsetName Person pP char str strcpy pP name str voidsetAge Person pP unsignedintyr pP age yr voidsetSalary Person pP floats pP salary s voidsetAddress Person pP char addr strcpy pP address addr 结构的操作2 voiddisp Person pP coutnameageaddresssalary endl 使用结构变量的person cc include intmain PersonJack Jack 30 BeijingChina 8000 0 disp 封装好的结构1 structPerson charname 30 unsignedintage charaddress 100 floatsalary voidsetName char voidsetAge unsignedint voidsetAddress char voidsetSalary float voiddisp 封装好的结构2 voidPerson setName char str strcpy name str voidPerson setAge unsignedintyr age yr voidPerson setSalary floats salary s voidPerson setAddress char addr strcpy address addr 封装好的结构3 voidPerson disp cout Name name endl cout Age age endl cout Address address endl cout Salary salary endl 使用封装后的结构变量的person cc include intmain PersonJack Jack 30 BeijingChina 8000 0 Jack disp Personsomebody somebody setName Lisa somebody setAge 20 somebody setAddress Toronto Canada somebody setSalary 6000 0 somebody disp 仍然存在的问题 include intmain PersonJack Jack 30 BeijingChina 8000 0 Jack disp Jack salary 1000 00 Jack disp 如何实现数据隐藏 引入class类型对数据成员进行保护增加存取范围私有成员private保护成员protected公共成员public 定义类来实现数据隐藏 classPerson private charname 30 unsignedintage charaddress 100 floatsalary public voidsetName char str voidsetAge unsignedintyr voidsetAddress char str voidsetSalary floatyuan voiddisp 类成员的作用域属性 在C 中 class与struct的区别struct的缺省作用域为publicclass的缺省作用域为privateprivate的数据成员只能被类的成员函数所使用 使用对象的person cc include intmain Personsomebody somebody setName Lisa somebody setA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论