c++
11、13
1、程序入口main()
2、函数分类:通用函数,类的成员函数:从属某类的函数
3、类可看成数据类型
4、类:a封装数据和操作 b成员具有三种访问机制,共有、保护、私有
5、由类的对象访问成员函数
6、类的实例-对象
7、类的特点-封装与隐藏:a算法和数据结构结合 b支持模块化程序设计 c保护私有成员,隐藏对外实现
8、类的继承将不同事物按照抽象级别,形成不同层次的类
9、继承的好处:减少开发新类的工作量,软件复用
10、程序开发:多文件的体系结构
11、一个c++程序由多个文件构成,编译的基本单位,只有一个文件可以定义函数main
12、基本数据类型:整数,浮点数,双精度数,字符,布尔型,无值
13、十进制有正负数之分,八进制、十六进制无负数
14、整型常量标识符 const int 常量名=常量值
15、整型的扩展:long int 或long一般4个byte,short int或short
16、单引号括字符常量,双引号括字符串
17、特殊字符:a控制字符'\'反斜杠转义字符'\\'反斜杠,'\''单引号.'\"'双引号,' '空格,'\?'问号
18、每个字符串的结尾空字符'\0'ascii码为0
19、字符常量标识符const char 常量名=字符常量,字符串常量 const char 字符传名[]="字符串"
20、字符变量可以作为整数运算
21、bool型两个值:true false 条件表达式返回布尔型值
22、实型:float 范围-3.4E+38~3.4E+38 有效数字7位
double 范围-1.7E+308~1.7E+308 有效数字15位
long double 范围-1.2E+4932~1.2E+4932 有效数字19位
23、实数表示方法:定点数表示法,在数字后加f表示float,不加标志double 加l表long double ,指数表示
24、给浮点赋值时注意有效数字
25、基本数据类型的修饰符:long 修饰int和double,short修饰int,singned、unsigned修int和char
11.13
1、short用2个byte,float用4个byte
2、signed使用一位表示符号,float 32bit:符号1bit、指数7bit、尾数24bit
double 64bit:符号1bit、指数10bit、尾数53bit
3、bool型8bit:true0000 0001,false0000 0000
4、简单数据类型的取值范围:
(byte) char 1 -128~128,
short 2 -2E15~3E15-1
int 4 -2E31~2E31-1
long 4 -2E31~2E31-1
unsigned char 1 0~255,
unsigned short 2 0~65535
unsigned [int] 4 0~2E32-1
unsigned long 4 0~2E32-1
5、枚举:整形符号常量的集合?? 提高程序的可读性
6、结构:属于同一对象的信息的集合
7、类:属于同一对象的数据和操作的集合
8、数据类型选择的原则:根据所表示的数据的类型选择,根据数据的范围选择
9、表达式的语法规则:先比较后逻辑,先计算后赋值,赋值操作右结合
10、赋值表达式的左值:具有存储空间
空间可以修改 返回引用的函数是左值 (i=10)=j中表达式i=10的值是i 因为赋值表达式的值是赋值号坐标表达式的值
11、变量和常量的初始化不是赋值!
12、类型转换:转换总是朝着表达数据能力更强的方向进行
隐式类型转换
char->short->int->long int->double->long double
unsigned char->unsigned short->unsigned int->unsigned long->double->long double
float->double->long double
显式类型转换
c++方式:数据类型 (表达式)eg.int (3.14159) !!
c方式:(数据类型) 表达式 eg.(float) 3
13、显式类型转换的好处:减少隐式转换的次数,控制结果类型
14、类型转换的不安全性:unsigned ->signed 可能会使正数变负数 long->short 会丢前两个字节信息
15、switch的判决条件是整型的常量表达式
16、do-while语句至少执行do后的语句一次
17、break:跳出当前循环,
continue:中断当前循环回到循环开始
goto:跳转到同一函数的指定标号处 (会破坏程序的结构,不推荐用)
从多重循环中跳转到最外层循环外可用goto
18、循环次数固定用for,用永久循环while(1) 并根据输入break!
19、函数的定义只有一次,但函数声明可以出现多次!
20、面向对象思想中,函数调用成为对象之间发送消息的工具!
21、main函数的参数通过命令行提供 run arg1 arg2...,main函数返回值返回给调用它的系统
22、函数调用时栈中存放内容:调用函数的返回地址,传递参数,被调用函数的局部变量
23、栈空间是有限的,会overflow
24、全局变量和局部变量的区别:作用域不同,生命期不同,全局变量有静态生命期
25、作用域和生命期的区别:函数中的局部变量在进入函数时被分配空间,但只在作用域中可用?
26、静态变量:有局部作用域和静态生命期,可用作计数
27、内存分布:程序代码,程序数据(全局变量和静态变量!),堆(动态申请的变量),栈(局部变量)
28、要使全局变量尽可能少
29、递归分为直接递归和间接递归
30、递归设计要点:递归结束条件,每次递归降低复杂性,有递归操作
31、函数重载:让具有类似功能的函数具有相同的名字
32、重载函数的匹配:寻找一个严格的匹配,通过隐式类型转换寻找匹配
33、为什么定义函数:具有相对独立的功能,经常使用
11.14
1、int a[5] 定义一个具有5个元素的数组,int a(5)定义一个初始值为5的常量
2、数组表示内存中一块连续的区域,数组名可直接加偏移量。数组元素的类型决定了每次偏移的大小
3、数组的初始化:int ayyay[10]={0,1,2}; 正确。int array[10]={};或int array[] 错误!。
4、字符数组的初始化方式:char cha[10]={"string"};或char cha[10]="string";等
5、数组大小:len=sizeof(array)/sizeof(int);常用于动态得到数组大小
6、数组下标从0开始
7、数组名作为函数参数是指针(地址)传递时会丢失数组本身的信息 sizeof(参数数组名)将不是数组的大小,是指针的大小!,一般把数组大小作为参数传给函数。!
8、多维数组的初始化:不能省略第二维大小(以列序为主存放的语言是否不可省略第一维大小?)
9、'\0'=0x0
10、指针所指的数据类型用来表示如何解释指针变量所指的地址存放的数,但指针变量存放的内存长度一样
11、指针的初始化:变量的地址,另一个指针,数组名
12、定义两个指针注意:int *p1,*p2;每个指针前都需要星号
13、指针指向常量不能被赋值!!
14、&只能用于可以求出地址的表达式
15、地址相加不允许:p=&i+&j;不允许! p=%i+2;允许但危险!
16、数组名实际上是指针,*(p+i)等价于array[i] p+i等价于array+i
17、指针变量值的增加和减少以其所指数据类型所占字节空间为单位
18、指针于数组的不同:数组名是指针常量,不能运算!
19、动态数组:从堆分配空间,首地址给指针 分配array=new int[num];回收 delete []array;
20、用new申请的空间必须用delete释放 new[]申请的空间必须用delete[]释放!
21、常量指针:congst int *p=&i指针变量自己可改,但指向的常量空间不可改!
作为函数参数传递时用保护实参不被修改
20、指针常量:指针自己不允许修改 定义:int *const p !
21、指向常量的指针常量:const int *const p=&i;指针本身和指针的值都不可改
11.19
1、c++程序开发过程:.cpp源文件+.h头文件+项目配置文件->预编译->编译->+库文件->连接->可知行可执行程序
2、连接过程:.obj目标代码(二进制代码)+.lib->.exe
3、c++源文件内容:预编译指令,定义,声明
4、定义:写函数的实现,声明:说明已被定义,在本文件中要用到
5、头文件的内容:预编译指令,定义(常量,数据类型,内联函数?),声明(声明外部数据,外部函数)
6、头文件类型:函数库头文件(eg.#include <math.h>用<>表示),类库头文件(eg.#include <iostream.h>用<>表示),自定义头文件(用"")
7、多文件的作用:提高编译效率,每次只需编译被修改的文件,便于管理与调试可分别开发逐个测试,模块化
8、头文件的作用:通用函数、类的接口说明,联系各个源文件,增加可读性可修改性
9、预编译命令:#include 将头文件的内容插入到当前文件中,#define 定义常量或宏eg.#define MAX(x,y) ((x>y)?x:y)替换所有内容为指定值
条件编译命令:#if #ifdef
10.允许某个头文件被多次包含进定义#ifndef,条件编译指令#ifdef DEBUG... 检查某个条件是否成立eg.检查版本
11.作用域:文件作用域:在整个文件中都可使用(全局变量,静态全局变量,通用函数),
局部作用域:局部变量
类作用域:类定义和类的成员函数的定义范围
函数作用域:标号
11.27
1.类作用域:类的成员的作用域在类的定义域和成员函数的实现
2.可见性:标识符的作用域
3.局部作用域的变量覆盖全局变量,但加::后表示使用全局变量eg.age=20; People::age=20; ::age=20
4.存储类型(storage class):auto局部变量的默认类型,register很少使用,static静态生命期,extern外部生命期
5.extern可用于说明变量和函数已在其他地方定义,不须分配空间
12.2
1.具有静态生命期的变量初始化为0,具有局部生命期和动态生命期的变量不自动初始化
2.结构化程序设计:程序=数据+函数+调用,面向对象程序设计:程序=类+对象+继承+消息
3.对象是系统的基本单位,对象的属性和操作形成一个的整体,具有共同特征的对象抽象成类,对对象的类进一步抽象形成类簇,对象之间存在静态关系(对象形成时就存在)和动态关系(对象通过消息发送完成),对象具有状态(数据)和行为(操作),对象(类)间的关系:继承,组合,消息
4.抽象:对象,对象间的关系,类(具有共同特征的对象),基类和派生类
5.封装:对象是属性和操作的集合,信息隐藏
6.消息:向对象发出的服务请求
7.类:是具有相同属性和操作的一组对象的集合,它为属于改类的全部对象提供了统一的抽象描述,OOPL中类相当于一种数据类型
8.类是对象的抽象描述,是对象的模板.对象是类的实例9.继承是描述类之间共同特性的机制
10.多态:运算符,函数重载.基类种定义的属性或操作被派生类继承后,可以具有不同数据类型或表形出不同的行为
11.类对象的成员不能在类定义时初始化,在类创建时进行
12.5
1.构造函数的调用时间:对象建立时由系统自动调用.
2.构造函数的含义:在对象建立时初始化对象的数据成员,构造一个具有意义的正确的对象
3.构造函数的特点:函数名和类名同,无返回值,由系统自动调用,必须是public成员,可以重载,可以初始化常量数据成员
4.成员初始化参数表可以初始化:常量成员,变量成员(也可以在构造函数体中初始化),基类成员?,对象成员,不可以初始化静态成员,静态成员不属于某个对象,是类的特征
5.常量成员和引用成员必须在成员初始化参数表中进行,不能赋值,对象成员和基类成员也必须在成员初始化参数表中初始化,由系统调用他们的构造函数
6.每个类必须有一个构造函数,如果没有定义构造函数,C++提供默认构造函数do nothing.如果定义了构造函数,则C++不再提供
7.以下情况必须为类定义默认构造函数:无初始化值的对象,对象数组,动态建立无初始化
6.对象成员和基类成员,

浙公网安备 33010602011771号