当前课程知识点:C++语言程序设计基础 >  第3章 函数 >  含有可变参数的函数 >  含有可变参数的函数

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

含有可变参数的函数在线视频

含有可变参数的函数

含有可变参数的函数


含有可变参数的函数






initializer_list提供的操作




 


initializer_list的使用方法





initializer_list使用举例




下一节:内联函数(例3-14)

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

含有可变参数的函数课程教案、知识点、字幕

大家好

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

我想大家学会了写函数以后

可能就会觉得

我是不是能够写一个

参数个数不确定的函数呢

这个确实是编程中

是很重要的一个需求

用我们此前学的办法

是没有办法解决这个问题的

因为你在定义一个函数的时候

把它的形参表就确定好了

实际上呢

在C++新标准中

为我们提供了很方便的一个途径

让我们可以定义

可变长度的形参表

接下来

我们就来看从语法上

如何实现一个可变长度的形参表

现在我们来看一下

含有可变参数的函数

它的语法规定

那么C++标准中

提供了两种主要的方法

来实现这个参数长度的可变

那么一个方法就是

当所有的参数类型相同的时候

可以传一个名为

initializer_list的这种

标准库的类型对象

那么如果说

参数的类型是不同的

那我们就不能用这种办法了

我们可以用第九章要讲的

这个可变参数模板

那么这个initializer_list

是一种标准库里面的类型

它实际上也是一个类模板

可以用于表示

某种特定的类型值的数组

这个类型定义在同名的头文件中

也就是说

你要include initializer_list

这个头文件才可以

这个表给出了

initializer_list所提供的

这些主要的有用的操作

大家可以看一下

也可以尝试着去用一下

使用这个initializer_list

这个模板的时候

我们需要在模板名字后面

跟一对尖括号

那么括号里面要给出类型参数

那大家看这几个例子

比如说这儿

我们在类型参数中给出了string

那么表示这个

initializer_list元素类型都是string

也就是说

它包括了一组string

构成的参数表

那第二个呢

我们看到可以用int来作类型参数

这个模板呢

我们将在第九章介绍

现在我们只要学着这个样子

这么用就可以了

那么这个initializer_list

比较特殊的一点呢

是其中的对象的元素

永远是常量值

我们没有办法去改变

initializer对象中的元素值

那一个函数的形参表中

可能会有一组

长度不定的同类型的参数

也可能除此而外

还有其他类型的参数

这也是可以的

所以含有initializer_list形参的

这个函数也可以同时

拥有其他的形参

那么在编写代码的时候

比如说我们可能希望

要生成这个错误信息

去告诉用户现在出了什么错了

那我们就希望这个程序中

是不是可以用同一个函数

去实现这个功能

那么这个就是initializer_list

一个很好的应用场景的例子

那么这个时候呢

我们就要用同一个函数

来实现错误信息输出

可是又是针对不同的问题

那么不同的问题

它出现错误的时候

这个错误信息长度可能也不一样

它的参数个数可能也不一样

这个时候怎么办呢

我们就恰好可以用

initializer_list去定制这个错误

处理函数它的参数长度

在运行时

根据实参去定制它

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章小结

--第六章小结

-综合实例

--综合实例

-实验六(下)

--实验六(下)

含有可变参数的函数笔记与讨论

也许你还感兴趣的课程:

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