版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计任课教师信息课程目标课程目标课程学习方法成绩评定成绩评定教材使用 良好的编程习惯int fun3(int i, const char* j) int a = 0, b = 0, c = 0;a = fun1(j);b = fun2(j);c = b a i;if(c 0) cout error; return -1;else return c;良好的编程习惯 int WithdrawMoney(int _money, const char* _identity) int loanMoney = 0, totalMoney = 0, leftMoney = 0; loanMone
2、y = GetLoanMoney(_identity); totalMoney = GetTotalMoney(_identity); leftMoney = totalMoney - loanMoney - _money; if(leftMoney 0) cout there is no enough money left; return -1; else return leftMoney; 良好的编程习惯 不合适的命名方法:不合适的命名方法: numberOfPeopleOnTheChinaOlympicTeam 适宜长度的命名方法:适宜长度的命名方法: chTeamMembers, ch
3、MemberCount 良好的编程习惯不好的例子不好的例子: for(int i = 0; i total; i+) while(flag = 1) 比较好的更改:比较好的更改:for(int teamIndex = 0; teamIndex teamCount; teamIndex+) while(morePeople = 1) 良好的编程习惯:一套目前使用最广泛的前缀命名法,其主要包括属性前缀,类型前缀以及描述前缀三种。属性前缀 g_xx: 全局变量 c_xx:常量 m_xx:成员变量s_xx:静态变量类型前缀 指针:p 函数:fn 布尔型:b 计数: c/cnt 整形: i 字符:ch
4、浮点数:f/d 长整形: l 无符号:u 字符串: sz 字: w 字节: by 函数: fn良好的编程习惯描述前缀: 最大: Max 最小: Min 初始化: Init 源:Src 目的: Dest 临时: T e.g. g_cchNumber pszCompName pfnIsEmpty bool Copy(string srcData, string destData) 对字符进行计数的全局变量指向字符串的指针,表示公司名指向函数的指针,判断是否为空C+程序语言概述入门完全兼容C语言的结构化编程模式(C语言)面向对象程序设计(传统意义的C+)通用模板库STL:Standard Templ
5、ate Library范式编程(模板化开发语言)C+语言概述编程环境C+语言的编程环境: 推荐使用:Visual Studio 2005以上版本C+语言概述Hello WorldJ必不可少的Hello World程序 #include using namespace std; int main() cout “Hello World” endl; return 0; C+标准头文件C+标准命名空间cout为C+的输出流C+语言概述关键字 C+包括了60个关键字,和C语言相比增加了28个关键字,分别是:面向对象:class, this, virtual, typename typeid, fri
6、end, public, private, protected异常处理:throw, catch类型转换:const_cast, static_cast, dynamic_cast, reinterpret_cast模版: template命名空间:namespace, using C+语言概述关键字 运算符: operator, new, delete布尔运算: bool, false, true其它: explicit, inline, mutable structC+语言概述数据类型 和C语言的数据类型基本相同,主要包括: char(1), unsigned char(1), short
7、(2), unsigned short(2), int(4), unsigned int(4), long(4) , unsigned long(4), float(4), double(8), long double(8)。 增加的数据类型为:bool(1) C语言的bool定义方式一般为:#define int BOOL#define TRUE 1#define FALSE 0L问题在于占用了问题在于占用了4个字节个字节C+语言概述控制语句 C+的控制语句与C语言完全相同,主要包括: 选择控制: if, else-if, switch-case 循环控制:while, do-while,
8、for; 其它:break, continue, goto.C+语言概述输入输出 例:cout “Hello world”; cout “a + b = ” 表达式 表达式 例: int a, b; cin a b; 在键盘上输入 5 6 cout a “ ” b endl; 输出结果为:5 6使用时必须包含:#include endl为控制字符,即回车或等同于nC+语言概述输入输出3、输入输出控制 操作符含义dec十进制表示hex十六进制表示oct八进制表示ws提取空白符endl插入换行符ends插入空格setprecision设置精度(包含小数点)setw设置域宽!必须使用#include
9、 C+语言概述常量const&回顾:C语言中常量定义 #define PI 3.1415926M存在的问题:非类型变量,容易在使用时出错。因此,引入了const限定符用于定义一个常变量。&const的作用:定义一个变量,其具有固定的值,不允许修改,因此必须在申明时初始化。例1: const int i = 10; int const j = 10; i = i + 3; j = j 5; J推荐使用L不推荐使用L编译出错L编译出错C+语言概述常量const!const与指针& 指针简单回顾:int m = 10;int *p = &m; &指向const的指针(指针指向的地址中的内容不能修改)
10、例:int m = 10; const int* p = &m; (*p)+; 10指针p mJ推荐使用L不推荐使用L编译出错C+语言概述常量const&const指针(即指针本身是不能修改的) 例: int m = 10, n = 11; int * const p = &m; p = &n;C 区分的技巧 主要是看主要是看const是在是在*号的哪边,如果是在左边,即为指号的哪边,如果是在左边,即为指向向const的指针;如果是在右边,即为的指针;如果是在右边,即为const指针指针1011mn指针pp只能指向m试图指向n,出错C+语言概述常量const&指向const的const指针:
11、const int* const p = 一个地址; int const* const p = 一个地址; 例: int m = 10, n = 11; const int* const p = &m; (*p)+; p = &n; L编译出错L编译出错C+语言概述常量const8综合实例: int a = 3, b = 4; const int* p1; int const* p2; int* const p3 = &a; const int* const p4 = &a; p1 = &a, p2 = &b; *p1 = 5, *p2 = 8; *p3 = 5; p3 = p1; p4 =
12、p1; *p4 = 4;J正确L非法,因为指针指向的内容不能被修改J正确L非法,指针本身不能改变L非法,因为指针指向的内容不能被修改L非法,指针本身不能改变C+语言概述引用 引用是C+对C语言的一个重要扩充,其实质是一种别名别名机制。引用所使用的符号为:& 例: int a = 10; int &b = a; cout a endl; cout b endl;J此时输出的结果为:1010 10 a 10 aC+语言概述引用 int a = 10; int &b = a; cout &b endl &a; a = a * a; cout a endl b;别名:b!输出的地址是一致的别名:b 1
13、00 a输出结果为:100100C+语言概述引用M引用使用的注意事项:!引用在声明时必须初始化例: int &b; int max(int &a, int &b); !引用在初始化后不能申明为另一变量的引用。例: int a = 10, c = 5; int &b = a; &b = c; b = c; L非法J可行J可行L非法C+语言概述引用M引用使用的注意事项:!指针的引用例1:int m = 10;int &n = m;int *p = &n;cout m endl n endl *p C+语言概述引用!指针的引用 例2: int m = 5; int *p = &m; int* &q
14、= p; int n = 10; p = &n; cout *p endl *q 别名指针q-m输出结果,均为10C+语言概述引用!引用的好处 例1:写一个交换两个变量值的程序。 void swap(int *a, int *b) int temp = *a; *a = *b; *b = temp; void main() int i = 10, j = 11; swap(&i, &j); 1011ija-b-1110ia-b-jC+语言概述引用!引用往往和const一起使用4关于const的例子: const int i = 10; i+;Cconst和引用具有一个共同的特征:即必须在申明时
15、同时初始化,这也注定const和引用会成为一对“好基友”。例1: int i = 10; const int& b = i; b+;M此时编译器会报错,因为我们试图更改一个常量的值M此时编译器会报错,因为我们试图更改一个常量的值C+语言概述引用!引用的好处 引入引用后例1的更改: void swap(int &a, int &b) int temp = a; a = b; b = temp; void main() int i = 10, j = 11; swap(i, j); C+语言概述引用!引用的好处 例2: struct Student char name10; /包含了很多的属性 v
16、oid SomeFunction(Student stu) /实现某种功能 /in Main Student student1; SomeFunction(student1);JVoid SomeFunction(Student& stu)C+语言概述类型别名 通用用法: typedef 原类型 类型别名; 例1: typedef int Integer; Integer i = 10; 例2: typedef int* Integer_Pointer; int i = 10; Integer_Pointer p = &i;int i = 10int *p = &iC+语言概述类型别名 例3:
17、 typedef int (*Add_Func) (int, int); 实际上定义了一个函数指针,指向了一个返回值为int型,且接收两个int型参数的函数。 int Add(int num1, int num2) return num1 + num2; void main() Add_Func fun1 = Add; cout fun1(2,5); 输出结果为7Fvector:const_iteratorC+语言概述函数重载 int Max(int a, int b) return a = b ? a : b; float Max1(float a, float b) double Max2
18、(double a, double b) !重载的目的:实现一物多用。 int Max(int a, int b) float Max(float a, float b) double Max(double a, double b) int a = 10, b = 10;float m = 3.21, n = 4.25;Max(a,b); /调用int版本Max(m,n); / 调用float版本C+语言概述动态内存分配1、内存分配不得不提的两个概念:堆和栈C在堆上申请的内存必须手动释放,而在栈上申请的内存由操作系统自动释放。C+语言概述动态内存分配2、malloc和free的回顾: mall
19、oc原型:void* malloc(long numBytes); free原型: void free(void* byte); 例: char *ptr = (char*)malloc(100*sizeof(char); if(ptr != null) /do something free(ptr);L缺点1:必须进行强制转换L缺点2:需计算占用空间字节数L缺点3:由于是函数,执行效率不高C+语言概述动态内存分配3、 new的一般格式: 申请一个普通变量空间申请一个数组空间 例: int *p = new int(10);float* p = new float(3.1415926);cha
20、r *p = new char100; int size = 10; int *p = new intsize;C+语言概述动态内存分配4、delete的一般格式: 例: int *p = new int(10);float* p = new float(3.1415926);char *p = new char100;delete p;delete p;delete p;释放一个普通变量空间释放一个数组空间C+语言概述动态内存分配!思考:怎么样用new和delete来动态分配一个二维数组。 例:用new和delete动态分配一个包含3行,每行4个元素的二维数组。 C+语言概述动态内存分配&分
21、配步骤: 第一步:动态申请一个包含3个指针元素的数组。 int *p = new (int*)3; 第二步:依次动态申请三个包含4个元素的数组。 for(int i = 0; i 3; i+) pi = new int4; &释放步骤: 第一步:依次释放动态创建的包含4个元素的数组。 for(int i = 0; i b ? a : b; /in main m = max(i, j);a = i, b = j;m = a b ? a : b;C+语言概述字符串变量 #include 例1: string str; str = “Hello World”; cout str; cout =, , str3) cout str1; else cout str3; /定义了4个字符串变量/完成类似strcpy操作/完成类似strcat操作/完成类似strcmp操作/输出的应该是str1C+语言概述有默认参数的函数例: float CalcRoundSpace(float _radius, float pi) return pi * _radius * _radius; CalcRoundSpace(3.2, 3.14); float CalcRoundSpace(float _radius, float pi = 3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临床流式细胞检验技师考试试卷及答案
- 2026年高考物理终极冲刺:抢分清单01(高考物理156个公式)(抢分秘籍)(全国适用)
- 2025年中国人保财险江西省分公司专项社会招聘22人笔试历年参考题库附带答案详解
- 2025山东颐养健康产业发展集团有限公司招聘367人笔试历年参考题库附带答案详解
- 2025山东济南德曼节能科技(山东)有限公司招聘10人笔试历年参考题库附带答案详解
- 2025安徽蚌埠市东方投资集团有限公司下属子公司招聘劳务派遣19人笔试历年参考题库附带答案详解
- 2025宁夏广银铝业有限公司招聘4岗10人笔试历年参考题库附带答案详解
- 2025四川长虹教育科技有限公司招聘市场经理岗位1人笔试历年参考题库附带答案详解
- 2025四川港荣数字科技有限公司第一批项目制员工招聘3人笔试历年参考题库附带答案详解
- 2025四川九洲建筑工程有限责任公司招聘生产经理等岗位6人笔试历年参考题库附带答案详解
- 幼儿游学创业计划书
- 节能降耗培训课件
- 铁路大型养路机械构造与维修 课件 黑棣 6-4 配砟整形车
- 抖音员工号申请在职证明参考模板
- 郑渊洁童话之《五个苹果折腾地球》
- 基于1+X证书制度构建“岗课赛证”融通模式的典型案例
- 2023年年度全国注册土木工程师水利水电工程执业资格考试水工结构专业案例试卷上午
- 大一下学期高等数学期中考试试卷及答案
- GB/T 27725-2011热塑性塑料蝶阀
- GB/T 1957-2006光滑极限量规技术条件
- GA 884-2018公安单警装备催泪喷射器
评论
0/150
提交评论