
《C++程序设计》课程大纲一、课程名称:C++程序设计二、课程性质:选修、专业课三、学时与学分:40学时,2.5学分四、课程先导课:C语言程序设计,数据结构,操作系统五、课程简介“C++程序设计”是一门基于面向对象理论、工程性和实践性都很强的专业课,是众多面向对象程序设计语言的基础。本课程介绍C++最新国际标准的语法概念,包括常量、变量、表达式、左值、右值、有址与无址引用、只读与挥发存储、语句、函数、线程、协程、重载、内联、默认参数、省略参数、隐含参数、类、对象、构造、析构、实例成员、静态成员、机动成员、成员指针、封装、继承、聚合、友元、隐藏、覆盖、绑定、多态、(纯)虚函数、抽象类、虚基类、移动语义、运算符重载、名字空间、生命期、作用域、异常、断言、Lambda表达式、类型推导、模板及可变类型参数、折叠表达式、概念与约束、类型表达式解析、流及类库等重要概念。要求学生设计面向对象的模型和系统,掌握面向对象的程序设计方法,基于图形用户界面开发软件系统。六、课程目标通过理论讲解及教学演示,帮助学生掌握面向对象的基本概念,掌握安全、高效、可靠的程序开发方法,掌握C++面向对象的程序设计方法具备基于VSStudio+Qt进行跨平台开发图形用户界面软件的能力。课程的具体目标包括:目标1:理解类、对象、构造、析构、封装、继承、聚合、重载、多态、友元、实例成员、静态成员、机动成员、成员指针、隐藏、覆盖、绑定、多态、(纯)虚函数、抽象类、虚基类等面向对象的基本概念。目标2:理解线程、协程、左值、右值、有址与无址引用、只读与挥发存储、异常、断言、Lambda表达式、类型推导、模板及可变类型参数、概念与约束、类型表达式解析等概念,学习一系列C++国际标准有助于程1
1 《C++程序设计》课程大纲 一、课程名称:C++程序设计 二、课程性质:选修、专业课 三、学时与学分: 40 学时,2.5 学分 四、课程先导课: C 语言程序设计,数据结构,操作系统 五、课程简介 “C++程序设计”是一门基于面向对象理论、工程性和实践性都很强 的专业课,是众多面向对象程序设计语言的基础。本课程介绍 C++最新国 际标准的语法概念,包括常量、变量、表达式、左值、右值、有址与无址 引用、只读与挥发存储、语句、函数、线程、协程、重载、内联、默认参 数、省略参数、隐含参数、类、对象、构造、析构、实例成员、静态成员、 机动成员、成员指针、封装、继承、聚合、友元、隐藏、覆盖、绑定、多 态、(纯)虚函数、抽象类、虚基类、移动语义、运算符重载、名字空间、 生命期、作用域、异常、断言、Lambda 表达式、类型推导、模板及可变 类型参数、折叠表达式、概念与约束、类型表达式解析、流及类库等重要 概念。要求学生设计面向对象的模型和系统,掌握面向对象的程序设计方 法,基于图形用户界面开发软件系统。 六、课程目标 通过理论讲解及教学演示,帮助学生掌握面向对象的基本概念,掌握 安全、高效、可靠的程序开发方法,掌握 C++面向对象的程序设计方法, 具备基于 VS Studio+Qt 进行跨平台开发图形用户界面软件的能力。 课程的具体目标包括: 目标 1:理解类、对象、构造、析构、封装、继承、聚合、重载、多 态、友元、实例成员、静态成员、机动成员、成员指针、隐藏、覆盖、绑 定、多态、(纯)虚函数、抽象类、虚基类等面向对象的基本概念。 目标 2:理解线程、协程、左值、右值、有址与无址引用、只读与挥 发存储、异常、断言、Lambda 表达式、类型推导、模板及可变类型参数、 概念与约束、类型表达式解析等概念,学习一系列 C++国际标准有助于程

序高效、安全、可靠的开发方法。自标3:理解面向对象的分析、设计与建模方法,能够分析设计类和建立面向对象的模型,并能将面向对象模型转化为C++程序:掌握标准类库以及各种插件中的面向对象的设计概念。自标4:掌握基于图形用户界面三层模式开发方法,微软VisualStudic+Qt插件开发、调试、发布C++程序的方法,能够自主学习最流行最易用的编译开发环境、插件和工具,能够开发跨平台图形用户界面软件。七、课程目标对毕业要求的支撑关系支撑的毕业要求二级指标点对应课程目标12.1能认识到计算机技术日新月异的发展特点,认同自主学目标2习和终身学习的必要性12.2具备自主学习能力,能通过多种途径拓展自己已的知识和目标3能力,包括理解能力、归纳总结能力和提出问题的能力等2.2对计算机复杂工程问题的一个系统或者过程,能选择或目标3建立一种模型,对关键影响因素进行分析3.2能为计算机复杂工程问题解决方案设计满足特定需求的目标4软/硬件模块八、教学设计及对课程目标的支持第一章引言1.教学目标1)了解国际、国内计算机发展的历史;2)掌握基本组成及各部分的主要功能:3)掌握二进制及其转换方法,高级语言转换为汇编语言的方法:4)了解C++的发展历史及VS2019等开发环境的安装方法:5)掌握程序的开发过程、调试和发布方法。本章教学支持课程目标2和课程目标4。2.教学重点1)内存数据与二进制转换2
2 序高效、安全、可靠的开发方法。 目标 3:理解面向对象的分析、设计与建模方法,能够分析设计类和 建立面向对象的模型,并能将面向对象模型转化为 C++程序;掌握标准类 库以及各种插件中的面向对象的设计概念。 目标 4:掌握基于图形用户界面三层模式开发方法,微软 Visual Studio +Qt 插件开发、调试、发布 C++程序的方法,能够自主学习最流行最易用 的编译开发环境、插件和工具,能够开发跨平台图形用户界面软件。 七、课程目标对毕业要求的支撑关系 支撑的毕业要求二级指标点 对应课程目标 12.1 能认识到计算机技术日新月异的发展特点,认同自主学 习和终身学习的必要性 目标 2 12.2 具备自主学习能力,能通过多种途径拓展自己的知识和 能力,包括理解能力、归纳总结能力和提出问题的能力等 目标 3 2.2 对计算机复杂工程问题的一个系统或者过程,能选择或 建立一种模型,对关键影响因素进行分析 目标 3 3.2 能为计算机复杂工程问题解决方案设计满足特定需求的 软/硬件模块 目标 4 八、教学设计及对课程目标的支持 第一章 引言 1.教学目标 1)了解国际、国内计算机发展的历史; 2)掌握基本组成及各部分的主要功能; 3)掌握二进制及其转换方法,高级语言转换为汇编语言的方法; 4)了解 C++的发展历史及 VS2019 等开发环境的安装方法; 5)掌握程序的开发过程、调试和发布方法。 本章教学支持课程目标 2 和课程目标 4。 2.教学重点 1)内存数据与二进制转换

让学生理解C++关于内存和数据程序分类,理解二进制数据的转换及处理方法,理解程序与数据的关系,同时为地址与指针的理解打下基础。2)高级语言与汇编程序的关系让学生理解高级语言程序转换为汇编程序后,存放常量、变量以及代码所使用的不同类型的内存,理解高级语言程序汇编时的换名策略与函数重载的关系,理解函数的参数传递方法及函数返回值的存放策略。3)C++发展历史与流行开发环境的安装使用了解C++的发展历史及语言特点,介绍不同编译开发环境和工具的特点,介绍流行开发工具、插件的安装使用方法,介绍C++应用开发的基本流程和调试发布方法、以及开发所需学习的网络、数据库等其它知识。3.教学难点1)函数参数的传递及函数返回值理解不同编译技术采用的不同参数传递策略,理解实参的计算顺序与程序可移植性的关系,理解函数重载的实现方法,理解C++与C目标文件及库的连接方法。4.教学环节设计围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、练习与讨论、课外实践、课外阅读等教学形式。1)讨论函数换名策略为什么有助于函数重载的实现,实参的计算顺序为什么与程序可移植性有关,如何才能写出安全可靠的程序。2)作业围绕进制转换、C++的特点、函数的参数和返回值等布置。3)视频观看第一章教学视屏。4)课外实践要求学生下载VS2019和Qt插件,对编译和开发环境进行安装使用。5)课外阅读阅读C++关于2011、2014、2017及2020标准及其发展历史的文献。3
3 让学生理解 C++关于内存和数据程序分类,理解二进制数据的转换及 处理方法,理解程序与数据的关系,同时为地址与指针的理解打下基础。 2)高级语言与汇编程序的关系 让学生理解高级语言程序转换为汇编程序后,存放常量、变量以及代 码所使用的不同类型的内存,理解高级语言程序汇编时的换名策略与函数 重载的关系,理解函数的参数传递方法及函数返回值的存放策略。 3)C++发展历史与流行开发环境的安装使用 了解 C++的发展历史及语言特点,介绍不同编译开发环境和工具的特 点,介绍流行开发工具、插件的安装使用方法,介绍 C++应用开发的基本 流程和调试发布方法、以及开发所需学习的网络、数据库等其它知识。 3.教学难点 1)函数参数的传递及函数返回值 理解不同编译技术采用的不同参数传递策略,理解实参的计算顺序与 程序可移植性的关系,理解函数重载的实现方法,理解 C++与 C 目标文件 及库的连接方法。 4.教学环节设计 围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、 练习与讨论、课外实践、课外阅读等教学形式。 1)讨论 函数换名策略为什么有助于函数重载的实现,实参的计算顺序为什么 与程序可移植性有关,如何才能写出安全可靠的程序。 2)作业 围绕进制转换、C++的特点、函数的参数和返回值等布置。 3)视频 观看第一章教学视屏。 4)课外实践 要求学生下载 VS2019 和 Qt 插件,对编译和开发环境进行安装使用。 5)课外阅读 阅读 C++关于 2011、2014、2017 及 2020 标准及其发展历史的文献

第二章类型、常量与变量1.教学目标1)介绍C++的字符集、关键字、运算符:2)介绍预定义类型、常量及变量;3)介绍类型转换、指针类型、复杂类型解析方法;4)介绍左值、右值、有址与无址引用变量;5)介绍元素、数组、表达式、结构、联合。本章教学支持课程目标2。2.教学重点1)指针类型与复杂类型解析方法掌握指针类型与复杂类型解析的实质是运算符的优先级和结合性,为以后更复杂的类型如模版、类库等的理解奠定基础。2)左值、右值、有址与无址引用变量理解左值和右值在连续计算中的不同作用,掌握有址与无引用对程序安全和计算效率的影响。3.教学难点1)指针类型与复杂类型解析方法多级指针解引用与复杂类型的保留字const、constexpr、constinit、volatile对赋值和编译优化、程序的安全和执行效率的影响是教学一大难点。4.教学环节设计围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、练习与讨论、课外实践、课外阅读等教学形式。1)讨论为何无址引用变量不应引用函数返回的无址引用对象。2)作业围绕指针、表达式运算、左值与右值及类型解析等布置。3)视频观看第二章教学视屏。4)课外阅读4
4 第二章 类型、常量与变量 1.教学目标 1)介绍 C++的字符集、关键字、运算符; 2)介绍预定义类型、常量及变量; 3)介绍类型转换、指针类型、复杂类型解析方法; 4)介绍左值、右值、有址与无址引用变量; 5)介绍元素、数组、表达式、结构、联合。 本章教学支持课程目标 2。 2.教学重点 1)指针类型与复杂类型解析方法 掌握指针类型与复杂类型解析的实质是运算符的优先级和结合性,为 以后更复杂的类型如模版、类库等的理解奠定基础。 2)左值、右值、有址与无址引用变量 理解左值和右值在连续计算中的不同作用,掌握有址与无址引用对程 序安全和计算效率的影响。 3.教学难点 1)指针类型与复杂类型解析方法 多级指针解引用与复杂类型的保留字 const、constexpr、constinit、volatile 对赋值和编译优化、程序的安全和执行效率的影响是教学一大难点。 4.教学环节设计 围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、 练习与讨论、课外实践、课外阅读等教学形式。 1)讨论 为何无址引用变量不应引用函数返回的无址引用对象。 2)作业 围绕指针、表达式运算、左值与右值及类型解析等布置。 3)视频 观看第二章教学视屏。 4)课外阅读

阅读C++关于指针解引用及类型分析等方面的文献。第三章语句、函数及程序设计1.教学目标1)介绍C++的各种语句的用法;2)介绍函数及参数默认值、省略参数、引用参数:3)介绍重载、inline、constexpr、consteval函数;4)介绍线程变量、线程、协程:5)介绍变量的作用域与生命期。本章通过使用有穷自动机模型和多路分支语句教学支持课程目标2和目标3。2.教学重点1)函数及参数默认值、省略参数、引用参数inline、constexpr、consteval等各种函数的定义和使用方法,函数的参数默认值,函数的省略参数。2)线程变量、线程、协程线程变量的使用背景,线程与协程的联系与区别,如何用线程和协程提高程序的运行速度。3.教学难点1)协程的调度过程协成的挂起、唤醒以及返回所需要的接口,以及协程内部状态的切换是教学一大难点。4.教学环节设计围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、练习与讨论、课外实践、课外阅读等教学形式。1)讨论引用参数如何使用。线程与协程有何区别,如何使用线程和协程。2)作业围绕语句、函数和作用域和生命期等布置。5
5 阅读 C++关于指针解引用及类型分析等方面的文献。 第三章 语句、函数及程序设计 1.教学目标 1)介绍 C++的各种语句的用法; 2)介绍函数及参数默认值、省略参数、引用参数; 3)介绍重载、inline、constexpr、consteval 函数; 4)介绍线程变量、线程、协程; 5)介绍变量的作用域与生命期。 本章通过使用有穷自动机模型和多路分支语句教学支持课程目标 2 和 目标 3。 2.教学重点 1)函数及参数默认值、省略参数、引用参数 inline、constexpr、consteval 等各种函数的定义和使用方法,函数的参 数默认值,函数的省略参数。 2)线程变量、线程、协程 线程变量的使用背景,线程与协程的联系与区别,如何用线程和协程 提高程序的运行速度。 3.教学难点 1)协程的调度过程 协成的挂起、唤醒以及返回所需要的接口,以及协程内部状态的切换 是教学一大难点。 4.教学环节设计 围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、 练习与讨论、课外实践、课外阅读等教学形式。 1)讨论 引用参数如何使用。线程与协程有何区别,如何使用线程和协程。 2)作业 围绕语句、函数和作用域和生命期等布置

3)视频观看第三章教学视屏。4)课外实践利用有穷自动机模型和多路分支语句编程,解决人带着狼羊和白菜过河问题。第四章C++的类1.教学目标1)介绍类的声明与定义方法;2)介绍成员的访问权限;3)理解内联与位段的用法:4)理解new和delete同malloc与free的区别:5)介绍隐含参数、构造与析构过程。本章支持课程目标1。2.教学重点1)类的定义及成员访问权限理解隐含参数this的作用,为什么定义类时成员应选择合适的访问权限,成员访问权限选择与软件维护代价的关系。2)new、delete同构造与析构的关系介绍指针变量类型与new的类型表达式的关系,介绍为什么new分配内存之后要执行构造函数、而delete释放内存之前却必须先执行析构函数。3.教学难点1)new的类型表达式解析及其初始化列表指针变量的类型与neW的类型表达式相容才能初始化指针变量。而new后面的初始化列表必须符合类型表达式的要求,初始化列表分隔符()也可以作为构造函数参数的分割符,这是容易引起混淆的地方。4.教学环节设计围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、练习与讨论、课外实践、课外阅读等教学形式。6
6 3)视频 观看第三章教学视屏。 4)课外实践 利用有穷自动机模型和多路分支语句编程,解决人带着狼羊和白菜过 河问题。 第四章 C++的类 1.教学目标 1)介绍类的声明与定义方法; 2)介绍成员的访问权限; 3)理解内联与位段的用法; 4)理解 new 和 delete 同 malloc 与 free 的区别; 5)介绍隐含参数、构造与析构过程。 本章支持课程目标 1。 2.教学重点 1)类的定义及成员访问权限 理解隐含参数 this 的作用,为什么定义类时成员应选择合适的访问权 限,成员访问权限选择与软件维护代价的关系。 2)new、delete 同构造与析构的关系 介绍指针变量类型与 new 的类型表达式的关系,介绍为什么 new 分配 内存之后要执行构造函数、而 delete 释放内存之前却必须先执行析构函数。 3.教学难点 1)new 的类型表达式解析及其初始化列表 指针变量的类型与 new 的类型表达式相容才能初始化指针变量。而 new 后面的初始化列表必须符合类型表达式的要求,初始化列表分隔符{} 也可以作为构造函数参数的分割符,这是容易引起混淆的地方。 4.教学环节设计 围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、 练习与讨论、课外实践、课外阅读等教学形式

1)讨论为防止内存泄漏,用new初始化的指针变量为何要用delete或delete两种形式释放内存。两个对象为何先构造的应该后析构。2)作业围绕类的定义、成员访问及使用new和delete管理对象内存等布置。3)视频观看第四章教学视屏。4)课外实践利用类实现二叉树及其查找算法,探讨为隐含参数this能减少二叉树查找算法的代码书写量,节省和保护资源并能提高程序的执行效率。第五章成员及成员指针1.教学目标1)介绍实例数据及函数成员指针;2)介绍const、constexpr、volatile和mutable成员;3)理解静态数据及静态函数成员的用法:4)理解实例成员指针及及静态成员指针:5)介绍union的成员及成员指针。本章支持课程目标1。2.教学重点1)各种成员指针及其访问和计算次序理解实例成员指针与静态成员指针的不同、掌握非成员指针、实例成员指针、静态成员指针等的混合定义、初始化以及成员访问方法。2)mutable成员与成员类型的不确定性介绍mutable成员的恰当应用背景。理解为什么成员的类型会随对象的类型变化。理解为什么可以对只读成员进行类型转化并赋值,而对简单只读变量的类型转换和赋值却不起作用。3.教学难点1)各种指针的理解及混合用法7
7 1)讨论 为防止内存泄漏,用 new 初始化的指针变量为何要用 delete 或 delete[] 两种形式释放内存。两个对象为何先构造的应该后析构。 2)作业 围绕类的定义、成员访问及使用 new 和 delete 管理对象内存等布置。 3)视频 观看第四章教学视屏。 4)课外实践 利用类实现二叉树及其查找算法,探讨为隐含参数 this 能减少二叉树 查找算法的代码书写量,节省和保护资源并能提高程序的执行效率。 第五章 成员及成员指针 1.教学目标 1)介绍实例数据及函数成员指针; 2)介绍 const、constexpr、volatile 和 mutable 成员; 3)理解静态数据及静态函数成员的用法; 4)理解实例成员指针及及静态成员指针; 5)介绍 union 的成员及成员指针。 本章支持课程目标 1。 2.教学重点 1)各种成员指针及其访问和计算次序 理解实例成员指针与静态成员指针的不同、掌握非成员指针、实例成 员指针、静态成员指针等的混合定义、初始化以及成员访问方法。 2)mutable 成员与成员类型的不确定性 介绍 mutable 成员的恰当应用背景。理解为什么成员的类型会随对象 的类型变化。理解为什么可以对只读成员进行类型转化并赋值,而对简单 只读变量的类型转换和赋值却不起作用。 3.教学难点 1)各种指针的理解及混合用法

理解为何实例成员指针不是真正意义上的指针,通过nullptr根据不同指针类型实现为不同地址,加深易引起混淆的不同类型指针的初始化方法、不同类型指针的优先级及结合性导致的计算次序问题的理解。4.教学环节设计围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、练习与讨论、课外实践、课外阅读等教学形式。1)讨论引入实例成员指针的物理意义,各种成员指针的使用和访问方法。2)作业围绕const、constexpr、volatile、mutable成员、实例及静态成员指针的定义、访问及语法检查等布置。3)视频观看第五章教学视屏。4)课外实践讨论为什么实例成员指针不能和C++的任何类型相互进行类型转换。第六章继承与构造1.教学目标1)介绍单继承类的定义及使用方法:2)介绍冲突成员的访问方法;3)理解构造与析构的执行顺序:4)理解父类和子类关系及其优越性:5)介绍派生类对象的内存布局。本章支持课程目标1。2.教学重点1)继承后的成员访问权限及访问冲突理解继承方式不同导致继承后成员的访问权限变化。介绍如何利用作用域及作用域运算符解决访问冲突、修改访问权限,以及如何覆盖、隐藏与访问基类的成员。8
8 理解为何实例成员指针不是真正意义上的指针,通过 nullptr 根据不同 指针类型实现为不同地址,加深易引起混淆的不同类型指针的初始化方 法、不同类型指针的优先级及结合性导致的计算次序问题的理解。 4.教学环节设计 围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、 练习与讨论、课外实践、课外阅读等教学形式。 1)讨论 引入实例成员指针的物理意义,各种成员指针的使用和访问方法。 2)作业 围绕 const、constexpr、volatile、mutable 成员、实例及静态成员指针 的定义、访问及语法检查等布置。 3)视频 观看第五章教学视屏。 4)课外实践 讨论为什么实例成员指针不能和 C++的任何类型相互进行类型转换。 第六章 继承与构造 1.教学目标 1)介绍单继承类的定义及使用方法; 2)介绍冲突成员的访问方法; 3)理解构造与析构的执行顺序; 4)理解父类和子类关系及其优越性; 5)介绍派生类对象的内存布局。 本章支持课程目标 1。 2.教学重点 1)继承后的成员访问权限及访问冲突 理解继承方式不同导致继承后成员的访问权限变化。介绍如何利用作 用域及作用域运算符解决访问冲突、修改访问权限,以及如何覆盖、隐藏 与访问基类的成员

2)构造与析构的执行顺序构造函数的执行顺序决定了对象的初始状态,析构函数的正确定义和执行可以防止内存泄漏,同时执行顺序与对象的内存布局有关。3.教学难点1)构造与析构的执行顺序构造与析构函数的执行顺序由虚基类、基类、对象成员等的优先级和定义顺序确定,且构造和析构函数的优先级以及执行顺序正好相反。4.教学环节设计围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、练习与讨论、课外实践、课外阅读等教学形式。1)讨论对象之间及对象内部为何会规定先构造的必须后析构。2)作业围绕继承到派生类的成员的访问权限、派生类的定义以及基类成员的隐藏与覆盖、对象的构造顺序等布置。3)视频观看第六章教学视屏。4)课外实践讨论为什么要修改基类继承到派生类的成员的访问权限。第七章可访问性1.教学目标1)介绍面向对象与面向过程的作用域;2)介绍名字空间及其成员访问方法:3)介绍成员发元及其访问方法:4)介绍普通友元及其访问方法;5)介绍成员的覆盖与隐藏方法。本章支持课程目标2。2.教学重点9
9 2)构造与析构的执行顺序 构造函数的执行顺序决定了对象的初始状态,析构函数的正确定义和 执行可以防止内存泄漏,同时执行顺序与对象的内存布局有关。 3.教学难点 1)构造与析构的执行顺序 构造与析构函数的执行顺序由虚基类、基类、对象成员等的优先级和 定义顺序确定,且构造和析构函数的优先级以及执行顺序正好相反。 4.教学环节设计 围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、 练习与讨论、课外实践、课外阅读等教学形式。 1)讨论 对象之间及对象内部为何会规定先构造的必须后析构。 2)作业 围绕继承到派生类的成员的访问权限、派生类的定义以及基类成员的 隐藏与覆盖、对象的构造顺序等布置。 3)视频 观看第六章教学视屏。 4)课外实践 讨论为什么要修改基类继承到派生类的成员的访问权限。 第七章 可访问性 1.教学目标 1)介绍面向对象与面向过程的作用域; 2)介绍名字空间及其成员访问方法; 3)介绍成员友元及其访问方法; 4)介绍普通友元及其访问方法; 5)介绍成员的覆盖与隐藏方法。 本章支持课程目标 2。 2.教学重点

1)不同作用域的访问优先级理解不同作用域中类型、变量和函数的访问优先级,以及名字空间成员如何进入当前作用域、如何避免出现二义性访问错误。2)成员的覆盖与隐藏成员的覆盖是为了解决功能和用途不同问题,成员的隐藏是为了解决访问的安全性问题,正确地使用覆盖和隐藏可以保证程序的正确性以及提升程序的安全性。3.教学难点1)不同作用域的成员访问及避免二义性在大型软件工程项目中,会引用大量名字空间或第三方软件厂商定义的类型、变量或函数成员,恰当地定义或使用自已不同作用域的成员、以及引用第三方成员是成熟程序员应掌握的技巧。4.教学环节设计围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、练习与讨论、课外实践、课外阅读等教学形式。1)讨论为何在一种情形下基类和派生类成员之间的关系是覆盖关系,而到了另一种场景却又变成了隐藏关系。2)作业围绕不同作用域中的成员访问、名字空间定义和成员访问、以及基类派生类之间的成员隐藏和覆盖等布置。3)视频观看第七章教学视屏。4)课外实践讨论什么时候需要覆盖或隐藏基类成员。第八章多态与虚函数1.教学目标1)介绍虚函数的定义、重载与内联;10
10 1)不同作用域的访问优先级 理解不同作用域中类型、变量和函数的访问优先级,以及名字空间成 员如何进入当前作用域、如何避免出现二义性访问错误。 2)成员的覆盖与隐藏 成员的覆盖是为了解决功能和用途不同问题,成员的隐藏是为了解决 访问的安全性问题,正确地使用覆盖和隐藏可以保证程序的正确性以及提 升程序的安全性。 3.教学难点 1)不同作用域的成员访问及避免二义性 在大型软件工程项目中,会引用大量名字空间或第三方软件厂商定义 的类型、变量或函数成员,恰当地定义或使用自己不同作用域的成员、以 及引用第三方成员是成熟程序员应掌握的技巧。 4.教学环节设计 围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、 练习与讨论、课外实践、课外阅读等教学形式。 1)讨论 为何在一种情形下基类和派生类成员之间的关系是覆盖关系,而到了 另一种场景却又变成了隐藏关系。 2)作业 围绕不同作用域中的成员访问、名字空间定义和成员访问、以及基类 派生类之间的成员隐藏和覆盖等布置。 3)视频 观看第七章教学视屏。 4)课外实践 讨论什么时候需要覆盖或隐藏基类成员。 第八章 多态与虚函数 1.教学目标 1)介绍虚函数的定义、重载与内联;