说点什么吧~
因为程序设计是一门需要动手实践的课,所以这个笔记只记录了一些简单的知识点,如果大家想更深入的学习程序设计还是跟着课程多动手写代码吧~ 下面就是我笔记的全部内容:
C++语言程序设计基础 课程笔记
1. 绪论
计算机语言
程序员与计算机沟通的语言;
描述解决问题的方法和相关数据。
计算机语言的级别
二进制代码构成的机器语言;
使用助记符的汇编语言;
使用类似英语单词和语句的高级语言;
C++是面向对象的高级语言
C++支持的程序设计方法
面向过程的程序设计方法;
面向对象的程序设计方法;
泛型程序设计方法。
最初的计算机语言——机器语言
由二进制代码构成
计算机硬件可以识别
可以表示简单的操作
例如:加法、减法、数据移动等等
汇编语言
将机器指令映射为助记符
如 ADD、SUB、mov 等;
抽象层次低,需要考虑机器细节。
高级语言
关键字、语句容易理解;
有含义的数据命名和算式;
抽象层次较高;
例如,算式:a+b+c/d
屏蔽了机器的细节;
例如,这样显示计算结果:cout<<a+b+c/d
C++语言
是高级语言
支持面向对象的观点和方法
将客观事物看做对象
对象间通过消息传送进行沟通
支持分类和抽象
面向过程的程序设计方法:
机器语言、汇编语言、高级语言都支持;
最初的目的:用于数学计算;
主要工作:设计求解问题的过程。
计算机的基本功能
算术运算;
逻辑运算。
计算机中信息:
控制信息——指挥计算机操作;
数据信息——计算机程序加工的对象。
信息的存储单位 位(bit,b):
数据的最小单位,表示一位二进制信息;
字节(byte,B):
八位二进制数字组成(1 byte = 8 bit);
千字节 1 KB = 1024 B;
兆字节 1 MB = 1024 K;
吉字节 1 GB = 1024 M。
2. C++简单程序设计
C++字符集和词法记号
字符集
大小写的英文字母:A~Z,a~z
数字字符:0~9
特殊字符: ! # % ^ & * _ + = - ~ < > / \ ‘ “ ; . , : ? ( ) [ ] { } |
词法记号
关键字 C++预定义的单词
标识符 程序员声明的单词,它命名程序正文中的一些实体
文字 在程序中直接使用符号表示的数据
分隔符 () {} , : ; 用于分隔各个词法记号或程序正文
运算符(操作符) 用于实现各种运算的符号
空白符 空格、制表符(TAB 键产生的字符)、垂直制表符、换行符、回车符 和注释的总称
标识符的构成规则
以大写字母、小写字母或下划线(_)开始。
可以由以大写字母、小写字母、下划线(_)或数字 0~9 组成。
大写字母和小写字母代表不同的标识符。
不能是 C++关键字或操作符。
C++能够处理的基本数据类型
整数类型;
浮点数类型;
字符类型;
布尔类型。
程序中的数据
常量 在源程序中直接写明的数据; 其值在整个程序运行期间不可改变。
变量 在程序运行过程中允许改变的数据。
整数类型 基本的整数类型:int
按符号分 符号的(signed) 无符号的(unsigned)
按照数据范围分 短整数(short)长整数(long) 长长整数( long long )
ISO C++标准并没有明确规定每种数据类型的字节数和取值范围,它只是规定它们之 间的字节数大小顺序满足: (signed/unsigned)signed char ≤ (unsigned) short int ≤ (unsigned) int ≤ (unsigned) long int ≤ long long int
字符类型(char) 容纳单个字符的编码;
实质上存储的也是整数。
浮点数类型 单精度(float) 双精度(double) 扩展精度(long double)
符号常量 常量定义语句的形式为:
const 数据类型说明符 常量名=常量值; 或:
数据类型说明符 const 常量名=常量值;
例如,可以定义一个代表圆周率的符号常量:
onst float PI = 3.1415926;
符号常量在定义时一定要初始化,在程序中间不能改变其值
I/O 流
在 C++中,将数据从一个对象到另一个对象的流动抽象为“流”。流在使用前要被建 立,使用后要被删除。
数据的输入与输出是通过 I/O 流来实现的,cin 和 cout 是预定义的流类对象。cin 用 来处理标准输入,即键盘输入。cout 用来处理标准输出,即屏幕输出。
从流中获取数据的操作称为提取操作,向流中添加数据的操作称为插入操作。
3. 函数
函数:定义好的、可重用的功能模块
定义函数:将一个模块的算法用 C++描述出来
函数名:功能模块的名字
函数的参数:计算所需要的数据和条件
函数的返回值:需要返回的计算结果
调用函数需要先声明函数原型
若函数定义在调用点之前,可以不另外声明;
若函数定义在调用点之后,必须要在调用函数前声明函数原型:
函数原型:类型标识符 被调用函数名(含类型说明的形参表
函数的参数传递
在函数被调用时才分配形参的存储单元
实参可以是常量、变量或表达式
实参类型必须与形参相符
值传递是传递参数值,即单向传递
引用传递可以实现双向传递
常引用作参数可以保障实参数据的安全
函数重载的概念
C++允许功能相近的函数在相同的作用域内以相同函数名声明,从而形成重载。方便 使用,便于记忆
4. 类与对象
抽象
对同一类对象的共同属性和行为进行概括,形成类。
先注意问题的本质及描述,其次是实现过程或细节。
数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。
代码抽象:描述某类对象的共有的行为特征或具有的功能。
抽象的实现:类。
类和对象的定义
对象是现实中的对象在程序中的模拟。
类是同一类对象的抽象,对象时类的某一特定实体。
定义类的对象,才可以通过对象使用类中定义的功能。
构造函数的作用
在对象被创建时使用特定的值构造对象,将对象初始化为一个特定的初始状态。
析构函数
完成对象被删除前的一些清理工作。
在对象的生存期结束的时刻系统自动调用它,然后再释放此对象所属的空间。
如果程序中未声明析构函数,编译器将自动产生一个默认的析构函数,其函数体为 空。
5. 数据的共享与保护
类作用域
类的成员具有类作用域,其范围包括类体和非内联成员函数的函数体。
如果在类作用域以外访问类的成员,要通过类名(访问静态成员),或者该类的对 象名、对象引用、对象指针(访问非静态成员)。
文件作用域
不在前述各个作用域中出现的声明,就具有文件作用域,这样声明的标识符其作用 域开始于声明点,结束于文件尾。
可见性
可见性是从对标识符的引用的角度来谈的概念
可见性表示从内层作用域向外层作用域“看”时能看见什么。
如果标识在某处可见,就可以在该处引用此标识符。
如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在 内层可见。
对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符, 则外层作用域的标识符在内层不可见
类的友元
友元是C++提供的一种破坏数据封装和数据隐藏的机制。
通过将一个模块声明为另一个模块的友元,一个模块能够引用到另一个模块中本是 被隐藏的信息。
可以使用友元函数和友元类。
为了确保数据的完整性,及数据封装与隐藏的原则,建议尽量不使用或少使用友元
外部变量
如果一个变量除了在定义它的源文件中可以使用外,还能被其它文件使用,那么就 称这个变量是外部变量。
文件作用域中定义的变量,默认情况下都是外部变量,但在其它文件中如果需要使 用这一变量,需要用extern关键字加以声明。 外部函数
在所有类之外声明的函数(也就是非成员函数),都是具有文件作用域的。
这样的函数都可以在不同的编译单元中被调用,只要在调用之前进行引用性声明 (即声明函数原型)即可。也可以在声明函数原型或定义函数时用extern修饰,其 效果与不加修饰的默认状态是一样的。
6. 数组、指针与字符串
数组作为函数参数
数组元素作实参,与单个变量一样。
数组名作参数,形、实参数都应是数组名(实质上是地址,关于地址详见6.2),类 型要一样,传送的是数组首地址。对形参数组的改变会直接影响到实参数组。
数组元素所属类的构造函数
元素所属的类不声明构造函数,则采用默认构造函数。
各元素对象的初值要求为相同的值时,可以声明具有默认形参值的构造函数。
各元素对象的初值要求为不同的值时,需要声明带形参的构造函数。
当数组中每一个对象被删除时,系统都要调用一次析构函数。
指针的概念
指针:内存地址,用于间接访问内存单元
指针变量:用于存放地址的变量
注意事项
用变量地址作为初值时,该变量必须在指针初始化之前已声明过,且变量类 型应与指针类型一致。
可以用一个已有合法值的指针去初始化另一个指针变量。
不要用一个内部非静态变量去初始化 static 指针。
函数指针的典型用途——实现函数回调
通过函数指针调用的函数
例如将函数的指针作为参数传递给一个函数,使得在处理相似事件的时候可以灵 活的使用不同的方法。
调用者不关心谁是被调用者
需知道存在一个具有特定原型和限制条件的被调用函数。
说点什么吧~
欢迎来到学堂在线广场~
在这里你可以玩活动,看资讯,晒笔记。
还可以交学友、发心情、聊人生。
在学堂的每一天,就从这里开始吧!
点击 广场指南 了解更多