当前课程知识点:C++语言程序设计基础 >  第3章 函数 >  导学 >  导学

返回《C++语言程序设计基础》慕课在线视频课程列表

导学在线视频

下一节:函数定义

返回《C++语言程序设计基础》慕课在线视频列表

导学课程教案、知识点、字幕

大家好

欢迎继续学习C++语言程序设计

接下来呢

我们来学习第三章函数

首先

我将第三章的内容

给大家作一个概要性的介绍

使大家在学习过程中

能够了解这一章的全貌

那么第一个问题就是

大家会问

为什么在程序中有一个函数呢

函数不是数学中的术语吗

那实际上呢

最早的程序就是用来解数学题的

就是用来作科学计算的

所以

可能从那个时候

我们就把程序中的一个功能模块

就叫做一个函数

很多高级语言里面

都将功能模块定义为一个函数

那么一个函数呢

最早就是用来计算

一个数学公式

并且有一个计算结果

现在虽然计算机软件的应用

越来越广泛

它的用途远远不仅仅是

科学计算了

但是在C++中

我们仍然将一个功能模块

实现为一个函数

那么在这一章呢

就要给大家介绍

怎么样定义一个函数

怎么样调用一个函数

所谓定义一个函数

就是要把这个函数所描述的

解决问题方法写出来

那么调用呢

就是将这个函数

用在其他的地方

定义一次准备好了

在其他的地方就可以用

现成的定义好的这个函数了

这就是

这一章要讲的第一个问题

函数的定义与调用

接下来呢

还会给大家介绍内联函数

因为有些函数

它的计算公式非常简单

而按照函数这种机制呢

当调用函数的时候

它是要有一定开销的

这个后面课程中会给大家讲

到底开销在什么地方

开销会在保存

当前这个函数执行的现场

然后去转子函数

中间要传递参数

然后子函数执行完了以后

再返回来

要传递返回值

这些过程

都要付出时间与空间的开销

那么对于特别简单的函数来讲

可能你执行这个函数

所规定的操作花的时间

还不如转子函数

返回花的时间多

那这个时候

我们可以在C++中

用内联函数来解决这个问题

来平衡程序逻辑结构上

需要定义单独函数

而执行过程中

希望它不要去当函数调用

来转子函数返回

来平衡这一对矛盾用什么呢

用内联函数这种机制

那么在新版的C++标准中

还有一种修饰函数的关键字

constexpr

那么这个constexpr函数

是干什么的呢

它是常量表达式函数

那么这个函数很有意思

它的函数体中的可执行语句

只能有一句

就是return语句

那么规定

当给它的参数

参数是什么

参数是往往我们用来

传递计算所需要的必要条件

给函数所用的东西

就像数学函数那个括号里面

自变量一样

在程序中也会有函数的参数

后面会给大家介绍的

那么constexpr函数呢

当它的参数是常量的时候

它的返回值就一定是常量

那么这样的函数

是可以用来初始化符号常量的

我们在讲变量的定义

常量的定义的时候讲过

你如果定义一个量

前面加了const

它就是一个常量

用来初始化常量的呢

只能是已经

被初始化过的其他常量

或者是一个字面值的常量

和常量表达式

总而言之

应该是在编译期间

可以计算得到的这个量

在现实中做很多事情

大家可能都有一个约定

有一个默契

如果我不特殊指定的话

你就按照这种方式给我做事情

这种思维逻辑

我们都很习惯了

那么在程序中呢

我们定义一个函数的时候

也可以给函数的参数

定义一个默认值

这个就是带默认形参值的函数

这个机制非常有用

使得你定义一个函数以后

调用的方式可以多样

你可以给它全部的参数

也可以只给一部分参数

或者不给参数

所以说带默认形参值的函数

是让我们的函数更通用

更好用的一种有效的机制

我们知道

每一个函数应该有函数名

在数学中是这样的

在程序中也是这样的

比如说

我们平常习惯的作加法

那么你可以作整数的加法

可以作实数的加法

我们说话的时候

用数学语言表达的时候

都用的这个+号

说话的时候

都用了加法这个术语

并没有特殊去指定

说这是一个整数加法的方法

那是一个实数加法的方法

在程序中

我们也希望能这样

比如写一个函数去实现加法

让它既能处理整数

又能处理实数

可不可以呢

那么如果

不是面向对象的程序的话

它是不支持同一个函数名

对应于不同功能的

而在C++程序中

我们就可以这样做

因为这是面向对象的程序

它支持函数的重载

函数的重载就是说

我定义同一个函数名

但是可以有多种

不同的算法跟它对应

哪种算法

当然我们要用一个函数体来实现

那么如何去区分它呢

当你去调用这个函数的时候

怎么知道你到哪儿去找它

应有的函数体呢

这个时候就要看

你给函数的参数列表

定义的是什么样子的

如果你给的实参

去找你定义过的这些函数的形参去匹配

跟哪个函数的形参匹配上了

就去调用那个函数的函数体

就是一个函数调用表达式

对应到一个函数体这个过程

叫做绑定

在编译时完成的绑定叫做早绑定

也叫做编译时的绑定

那后面章节呢

我们肯定还会学到有晚绑定

也就是越形式绑定的

另外呢

在这一章我还要给大家介绍

C++的系统函数

在C++标准库中

有大量已经预先定义好的

这些系统函数

非常好用

常用的这些功能都在里面了

我们就不用再自己定义了

如果你发现

系统函数库里已经有这个函数了

那么你直接调用就可以了

这样使得我们编程序的效率

会更高

这就是第三章

我们要学习的一些主要内容

大家有一个概要性的了解

在整个学习过程中

就会能够有机地把所有内容

融会贯通地理解

这一章学习完了

大家应该能够去在

一种你选择的编译环境中

用调试工具

去跟踪单步执行跟踪到

函数的内部

去观察函数的调用和返回

以及参数传递过程

所以课后呢

希望大家把这些例题

都在编译环境中自己调试一下

还有

这一章的实验

也是需要大家课后去完成的

当然还会给大家提供

更多的练习题

让大家去做练习

这就是这一章要讲的主要内容

C++语言程序设计基础课程列表:

第1章 绪论

-导学

--第1章导学

-计算机系统简介

--计算机系统简介

--计算机系统简介 测试题

-计算机语言和程序设计方法的发展

--计算机语言和程序设计方法的发展

--计算机语言和程序设计方法的发展 测试题

-面向对象的基本概念

--面向对象的基本概念

--面向对象的基本概念 测试题

-程序的开发过程

--程序的开发过程

--程序的开发过程 测试题

-信息的表示和储存

--计算机中的信息与存储单位

--计算机的数字系统

--数据的编码表示

--信息的表示和储存 测试题

-实验指导

--实验一:VS开发环境介绍

第2章 C++简单程序设计(一)

-导学

--第二章导学

-C++语言概述

--C++的特点和程序实例

--C++字符集和词法记号

--C++语言概述 测试题

-基本数据类型、常量、变量

--基本数据类型、常量、变量

--程序举例

--基本数据类型、常量、变量 测试题

-运算与表达式

--算术运算与赋值运算

--逗号运算、关系运算、逻辑运算和条件运算

--Sizeof运算、位运算

--运算优先级、类型转换

--运算与表达式 测试题

-实验二:简单程序设计(上)

--实验二:简单程序设计(上)

第2章 C++简单程序设计(二)

-数据的输入和输出

--数据的输入和输出

--数据的输入和输出 测试题

-选择结构

--if语句

--switch语句

--选择结构 测试题

-循环结构

--循环结构——while语句

--do-while语句

--for语句

--嵌套的控制结构、其他控制语句

--循环结构 测试题

-自定义类型

--自定义类型

--自定义类型

-第2章小结

--第二章小结

-实验二:C++简单程序设计(下)

--实验二C++简单程序设计(下)

第3章 函数

-导学

--导学

-函数定义

--函数定义

--函数定义 测试题

-函数调用

--函数调用(例3-1)

--例3-2

--例3-3

--例3-4

--例3-5

--例3-6

--函数调用 测试题

-嵌套与递归

--函数的嵌套调用(例3-7)

--函数的递归调用(例3-8)

--例3-9

--例3-10

--嵌套与递归 测试题

-函数的参数传递

--函数的参数传递

--函数的参数传递 测试题

-引用类型

--引用类型(例3-11)

--引用类型 测试题

-含有可变参数的函数

--含有可变参数的函数

--含有可变参数的函数 测试题

-内联函数

--内联函数(例3-14)

--内联函数 测试题

-constexpr函数

--constexpr函数

--CONSTEXPR函数课后习题

-带默认参数值的函数

--带默认参数值的函数

--默认参数值例(3-15)

--带默认参数值的函数 测试题

-函数重载

--函数重载(例3-16)

--函数重载 测试题

-C++系统函数

--C++系统函数(例3-17)

--C++系统函数习题

-第3章小结

--第三章小结

-实验三(上)函数的应用

--实验三(上)函数的应用

-实验三(下)函数的应用

--实验三(下)函数的应用

第4章 类与对象

-导学

--导学

-面向对象程序的基本特点

--面向对象程序的基本特点

--面向对象程序的基本特点 测试题

-类和对象

--类和对象的定义

--类和对象的程序举例

--类和对象 测试题

-构造函数

--构造函数基本概念

--构造函数例题(1)——例4-1

--构造函数例题(2)——例4-2

--委托构造函数

--复制构造函数

--复制构造函数调用举例

--构造函数 测试题

-析构函数

--析构函数

--析构函数 测试题

-类的组合

--类的组合

--类的组合程序举例

--前向引用声明

--类的组合 测试题

-UML简介

--UML简介

--UML简介课后习题

-结构体与联合体

--结构体(例4-7)

--联合体(例4-8)

--结构体与联合体 测试题

-枚举类

--枚举类

--枚举类 测试题

-第4章小结

--第四章小结

-实验四(上)

--实验四(上)

-实验四(下)

--实验四(下)

第5章 数据的共享与保护

-导学

--导学

-标识符的作用域与可见性

--标识符的作用域与可见性

--标识符的作用域与可见性 测试题

-对象的生存期

--对象的生存期

--对象的生存期 测试题

-类的静态成员

--静态数据成员(例5-4)

--静态函数成员(例5-5)

--类的静态成员 测试题

-类的友元

--类的友元(例5-6)

--类的友元 测试题

-共享数据的保护

--共享数据的保护(例5-7)

--共享数据的保护 测试题

-多文件结构和预编译命令

--多文件结构和预编译命令(例5-10)

--多文件结构和预编译命令 测试题

-第5章小结

--小结

-实验五

--实验五

第6章 数组、指针与字符串(一)

-导学

--导学

-数组的定义与初始化

--数组的定义与使用

--数组的储存与初始化

--一维数组应用举例

--数组的定义与初始化 测试题

-数组作为函数的参数

--数组作为函数参数(例6-2)

--数组作为函数的参数 测试题

-对象数组

--对象数组

--对象数组 测试题

-基于范围的for循环

--基于范围的for循环

-指针的定义和运算

--指针的概念、定义和指针运算

--指针的初始化和赋值

--指针的算术运算、关系运算

--指针的定义和运算 测试题

-综合实例

--综合实例

-实验六(上)

--实验六上

第6章 数组、指针与字符串(二)

-指针与数组

--用指针访问数组元素

--指针数组

--指针与数组 测试题

-指针与函数

--以指针作为函数参数

--指针类型的函数

--指向函数的指针

--指针与函数 测试题

-对象指针

--对象指针

--对象指针 测试题

-动态内存分配

--动态分配与释放内存

--申请和释放动态数组(一)

--申请和释放动态数组(二)

--动态内存分配 测试题

-智能指针

--智能指针

-vector对象

--vector对象

--vector对象 测试题

-对象复制与移动

--深层复制与浅层复制

--移动构造

--对象复制与移动 测试题

-字符串

--C风格字符串

--string类

--字符串 测试题

-第6章小结

--第六章小结

-综合实例

--综合实例

-实验六(下)

--实验六(下)

导学笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。