讨论区讨论详情

【自主模式】C++语言程序设计基础课程笔记
2016-12-20 19:59:34

因为程序设计是一门需要动手实践的课,所以这个笔记只记录了一些简单的知识点,如果大家想更深入的学习程序设计还是跟着课程多动手写代码吧~ 下面就是我笔记的全部内容:


C++语言程序设计基础 课程笔记

 

1.     绪论

计算机语言

程序员与计算机沟通的语言;

描述解决问题的方法和相关数据。

 

计算机语言的级别

二进制代码构成的机器语言;

使用助记符的汇编语言;

使用类似英语单词和语句的高级语言;

 

C++是面向对象的高级语言

C++支持的程序设计方法

面向过程的程序设计方法;

面向对象的程序设计方法;

泛型程序设计方法。

 

最初的计算机语言——机器语言

由二进制代码构成

计算机硬件可以识别

可以表示简单的操作

例如:加法、减法、数据移动等等

 

汇编语言

将机器指令映射为助记符

ADDSUBmov 等;

抽象层次低,需要考虑机器细节。

 

 

高级语言

关键字、语句容易理解;

有含义的数据命名和算式;

抽象层次较高;

例如,算式:a+b+c/d

屏蔽了机器的细节;

例如,这样显示计算结果:cout<<a+b+c/d

 

 

C++语言

是高级语言

支持面向对象的观点和方法

将客观事物看做对象

对象间通过消息传送进行沟通

支持分类和抽象

 

 

面向过程的程序设计方法:

机器语言、汇编语言、高级语言都支持;

最初的目的:用于数学计算;

主要工作:设计求解问题的过程。

计算机的基本功能  

算术运算;  

逻辑运算。

 

计算机中信息:  

控制信息——指挥计算机操作;

数据信息——计算机程序加工的对象。

 

信息的存储单位 位(bitb)

 

数据的最小单位,表示一位二进制信息;  

字节(byteB)

八位二进制数字组成(1 byte = 8 bit);  

千字节 1 KB = 1024 B

兆字节 1 MB = 1024 K

吉字节 1 GB = 1024 M

 

 

2.     C++简单程序设计

 

C++字符集和词法记号

 

字符集

大小写的英文字母:AZaz

数字字符:09

特殊字符: ! # % ^ & * _ + = - ~ < > / \ ‘ “ ; . , : ? ( ) [ ] { } |

 

词法记号

关键字 C++预定义的单词

标识符 程序员声明的单词,它命名程序正文中的一些实体

文字 在程序中直接使用符号表示的数据

分隔符 () {} , : ; 用于分隔各个词法记号或程序正文

运算符(操作符) 用于实现各种运算的符号

空白符 空格、制表符(TAB 键产生的字符)、垂直制表符、换行符、回车符 和注释的总称

 

标识符的构成规则

以大写字母、小写字母或下划线(_)开始。

可以由以大写字母、小写字母、下划线(_)或数字 09 组成。

大写字母和小写字母代表不同的标识符。

不能是 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 指针。

 

函数指针的典型用途——实现函数回调

通过函数指针调用的函数

例如将函数的指针作为参数传递给一个函数,使得在处理相似事件的时候可以灵 活的使用不同的方法。

调用者不关心谁是被调用者

需知道存在一个具有特定原型和限制条件的被调用函数。


回复:

还没有人发言哦,来抢沙发吧~

请先登录

说点什么吧~

学堂公告

各位MOOCer大家好 (^-^)V

欢迎来到学堂在线广场~

在这里你可以玩活动,看资讯,晒笔记。

还可以交学友、发心情、聊人生。

在学堂的每一天,就从这里开始吧!

点击 广场指南 了解更多

推荐活动

我要举报
提交