当前课程知识点:VC++面向对象与可视化程序设计(下):MFC编程基础 > 第6章 MFC基础知识 > 6-2 C++的基本知识 > 6-2-6 重载
返回《VC++面向对象与可视化程序设计(下):MFC编程基础》慕课在线视频课程列表
返回《VC++面向对象与可视化程序设计(下):MFC编程基础》慕课在线视频列表
我们现在开始介绍重载
重载是C++的一个重要特征
重载包括函数重载和操作符重载
所谓函数重载是指同一个函数名
可以对应着多个函数的实现
函数重载允许一个程序内声明多个名称相同的函数
这些函数可以完成不同的功能
并可以带有不同的类型
不同数目的参数及返回值
使用函数重载可以减轻用户的记忆负担
并使程序的结构简单易懂
操作符重载
对操作符的重载是将C++语言中已有的操作符赋予新的功能
但与该操作符的本来含义不冲突
使用时只需根据操作符出现的位置来判断其具体执行哪一种运算
我们主要介绍函数重载
下面我们通过例子来介绍函数重载的应用
这个例子实现的是两个不同参数类型的重载
类My_class中对方法plus进行了重载
通过重载
使得在求两个数的和时不再区分整数和浮点数之间的不同
只需要直接调用类My_class的方法plus就可以了
那我们看一下这个例子
这里定义了My_class这个类
它有两个public公共成员函数
名字都叫plus
第一个plus
它有两个参数都是int
返回值也是int
第二个plus
它有两个参数都是double
返回值也是double
大家看这里定义的两个函数都叫plus
但是它的参数类型和返回值的类型是不一样的
那我们先看第一个返回值为int的plus函数
它里面有两个参数都是整型的
它这个运行结果return的是x+y
我们再看第二个返回值为double的plus函数
它里面有两个参数都是double
这个函数的返回值是x-y
那也就是说这时候我给了一个x、一个y
它能够根据数据类型直接去找执行哪一个plus
那这里面在主函数里面
定义了My_class的对象Data
那这个Data就能够执行public定义的公共成员函数
那这样我这里Data.plus
第二行也是Data.plus
第一个plus我给的是整型数5和10
它就直接去找这个函数了
第二个给的是5.0和10.0
它就去找第二个函数
这是double的
5跟10是int的
它直接就去找int
所以这样的两个重载的成员函数
分别调用求整型数之加和
和求浮点数之加和的函数plus来对不同的参数进行运算
函数重载要求编译器能够唯一地确定调用一个函数时
应该执行哪个函数代码
确定函数实现时
要求从函数参数的个数和类型上来区分
也就是说
函数重载时
要求函数的参数个数和参数类型不同
大家看这个plus
这个函数参数的类型就是不一样的
到这个编译环境来
我们运行一下
这时候大家看到了这个结果
第一行输出的这个plus(int,int)这个地方
结果是15
因为给的是5和10
第二行是两个double double
它调用的是第二个函数
第二个函数执行的是x-y的操作
所以就是5-10
就是-5
所以根据输入的数据类型的不同
它会去找相应的函数
不仅在类的成员函数上可以实现重载
构造函数上也可以实现函数的重载
大家看这里的定义
这里定义了一个CSample这个类
然后它有private参数
定义了public的公共函数
CSample这是无参的
这里没有参数大家看到了
还有一个是Csample(int)
这是有参的
而这两个参数的名字跟CSample是一样的
所以这两个函数都是构造函数
一个有参一个没参
说明这两个构造函数实行了重载
然后定义了一个area函数
它返回的是一个i值
在这里实际上就把函数的实现直接就写在这儿了
在这里给大家再复习一下内联函数的定义
我们看CSample这个无参函数在这里面是把0赋给了i
而有参函数是把x赋成了i
因为这个i是private的
所以在这里面它这个public的函数
是可以对int i进行操作的
然后我们看依一下main函数
main函数里面定义了一个j1和j2(5)
那也就是说j1调area
而area这里是无参的
所以j1里面调area
J1里面呢这个j1呢是没有带参数的
所以调用的应该就是CSample
而j2里面带了一个参数
所以调用的是这个
因为j1、j2分别是CSample的对象
可以调这个构造函数
调的过程到底调哪一个
就看它这里有没有参数了
所以这里用的j1
j1后面没有参数
自动调用Sample
而j2后面有参数
而且是一个整型参数
自动调用Sample(int)
-讨论实录
--0-0
-6-1 MFC概述
-6-2 C++的基本知识
--6-2-1 类
--6-2-2 对象
--6-2-6 重载
--6-2-9 指针
-6-3 MFC类的组织结构及主要的类的简介
--6-3-2 根类
-6-4 MFC中全局函数和全局变量
-7-1 概述
--7-1-1
--7-1-2
-7-2 按钮控件及其应用
--128B12447816EEF99C33DC5901307461
-7-3 按钮控件及其应用
--7-3
-7-4 静态控件
--7-4
-7-5 列表框控件
--7-5-1
--7-5-2
-7-6 编辑框控件
--7-6
-7-7 组合框控件
--7-7
-7-8 对话框通用控件
--7-8-1
--7-8-2
-讲义源代码
--html
-8-1&2 资源的应用以及菜单资源的使用
--8-1-1
--8-1-2
-8-3 快捷菜单的创建及其应用
--8-3
-8-4 加速键资源的创建及其使用
--8-4
-8-5 工具条资源的创建及其使用
--8-5
-8-6 字符串资源的使用
--8-6
-8-7 位图资源的创建及其使用
--8-7
-课堂示例源代码
--html
-第一次作业内容及要求
--html
--第一次作业及答题链接--作业
-9-1 概述
--9-1
-9-2 Doc/View框架的主要成员
--Video
-9-3 文档操作中的一些重要概念
--Video
-9-4 SDI编程实例
--Video
-9-5 MDI编程实例
--9-5-1
--9-5-2
-课堂示例源代码
--html
-第二次作业内容及要求
--html
--第二次作业及答题链接--作业
-10-1 利用音频函数实现多媒体程序设计
--10-1-1
--10-1-2
--10-1-3
--10-1-4
-10-2 利用Windows Media Player控件实现多媒体程序设计
--10-2
-课堂示例源代码
--html
-例11-1
--例1
-例11-2
--例11-2
-例11-3
--例11-3
-例11-4
--例11-4
-11-1 ODBC介绍与引用
--11-1
-课堂示例源代码
--html
-第三次作业及答题链接