当前课程知识点:VC++面向对象与可视化程序设计(下):MFC编程基础 >  第6章 MFC基础知识 >  6-2 C++的基本知识 >  6-2-7 友元函数

返回《VC++面向对象与可视化程序设计(下):MFC编程基础》慕课在线视频课程列表

6-2-7 友元函数在线视频

6-2-7 友元函数

下一节:6-2-8 友元类

返回《VC++面向对象与可视化程序设计(下):MFC编程基础》慕课在线视频列表

6-2-7 友元函数课程教案、知识点、字幕

我们开始介绍友元函数

类的主要特点是数据隐藏

也就是类的protected跟private成员

它们不能够被从所在的class以外的部分引用

私有部分在该类的作用域之外是不可见的

但有时候可能需要在类的外部访问类的私有部分

为此

C++允许类外部的函数或者(类)具有该类的私有部分的特权

它通过关键字friend把其他类或者非成员函数

声明为一个类的“友元”

在类的内部

友元被作为该类的成员看待

并且对对象公用部分的访问没有任何限制

大家看这个例子

我们仍然定义了一个CRectangle这个类

然后增加了一个函数friend

叫CRectangle duplicate

然后在这里面参数里面是一个类的名字

那我们看一下在这里面我们定义的这个set_values函数

set_values函数是公共类型的函数

把a赋给width

把b赋给height

我们再看一下这个duplicate函数

它里面的参数是CRectangle类的对象

所以在这里面函数参数的类型

是一个CRectangle类的

在这里面定义了CRectangle的对象rectres

rectres它引用了宽度和高度

这宽度和高度是什么值

是CRectangle定义的对象的宽度和高度的2倍

然后返回的是一个对象的值

实际上返回的就是对象的宽度和高度

大家看main函数

main函数定义了rect和rect的b

这两个对象

第一个对象rect的话呢我们调用了set_values这个函数2和3两个整型参数

那么2和3就给了int a跟int b

int a跟int b将a=2的值赋给了width

将b=3的值赋给了height

那也就是这个地方

它的私有的成员分别赋给了2和3的值

那2和3的值赋完之后

我们调用了duplicate这个函数

duplicate这函数把rect作为参数

把rect这个参数赋给了它

而rect实际上它是CRectangle对象的

rect里面通过设置的值2和3

这个时候它的值等于2

它的值等于3

分别乘以2

那这样的话rectres的宽度和高度就是变成了2*2 3*2

就是4和6

打印出这个面积的值是宽度和高度它的相乘

这时候相乘已经不是2和3的相乘

而是4和6的相乘

所以它的结果应该是24

这个函数就是一个友元函数

在这个友元函数里面友元是被作为类的成员来看待

而且对对象公用部分的访问没有任何限制

C++我们刚才说了

允许类外部的函数或者(类)具有该类的私有部分的特权

那这里面我们调用了这个duplicate这函数

在duplicate这函数里面

定义了rectres这个对象

里面调用了也是width跟height

这个函数是在这里面作为一个友元函数来调用的

所以它能够调用这两个参数

VC++面向对象与可视化程序设计(下):MFC编程基础课程列表:

第0章 课前讨论

-讨论实录

--0-0

第6章 MFC基础知识

-6-1 MFC概述

--6-1 MFC基础知识

-6-2 C++的基本知识

--6-2-1 类

--6-2-2 对象

--6-2-3 类的方法

--6-2-4 内联函数

--6-2-5 构造函数和析构函数

--6-2-6 重载

--6-2-7 友元函数

--6-2-8 友元类

--6-2-9 指针

--6-2-10 类的继承

--6-2-11 多态性和虚拟函数

-6-3 MFC类的组织结构及主要的类的简介

--6-3-1 MFC类的组织结构

--6-3-2 根类

--6-3-3 应用程序结构类

--6-3-4 可视对象类

--6-3-5 通用类

--6-3-6 OLE类

--6-3-7 ODBC数据库

-6-4 MFC中全局函数和全局变量

--6-4 MFC中全局函数和全局变量

第7章 Windows标准控件在可视化编程中的应用

-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章 在MFC中创建应用程序的资源

-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章 单文档与多文档

-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章 多媒体应用程序的设计

-10-1 利用音频函数实现多媒体程序设计

--10-1-1

--10-1-2

--10-1-3

--10-1-4

-10-2 利用Windows Media Player控件实现多媒体程序设计

--10-2

-课堂示例源代码

--html

第11章

-例11-1

--例1

-例11-2

--例11-2

-例11-3

--例11-3

-例11-4

--例11-4

-11-1 ODBC介绍与引用

--11-1

-课堂示例源代码

--html

第三次作业及答题链接

-第三次作业及答题链接

6-2-7 友元函数笔记与讨论

也许你还感兴趣的课程:

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