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

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

6-2-8 友元类在线视频

6-2-8 友元类

下一节:6-2-9 指针

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

6-2-8 友元类课程教案、知识点、字幕

我们介绍一个新的类叫友元类

就像我们可以定义一个friend函数

我们也可以定义一个class是另一个的class的friend

以便允许第二个class访问第一个class的protected和private成员

大家看这个例子

在这里定义了一个class的CSquare

CSquare的定义原型在这

又定义了一个CRectangle

这个跟前面的定义非常类似

在public里面定义了一个friend class CRectangle

在这里面声明了CRectangle是CSquare的friend

友元类

因此CRectangle可以访问CSquare的protected和private成员

更具体地说

也就是可以访问CSquare里面,对这个代码来说

能访问CSquare里面private的side这个参数

而这个参数实际是定义了矩形的边长

convert定义了一个CSquare的对象a

那么在这里面convert参数

就是a里面

就有a.side可以赋给宽度

也可以赋给高度

因为这是正方形的

所以这里面矩形里面定义了宽度和高度

但是在CSquare里面它只定义了一个side

那side可以定义给宽度和高度

因为CRectangle是一个friend的

所以它可以访问CSquare里面的数据

也就是说CSquare里面的数据可以对它进行赋值

那这个main函数就是很简单了

那我们一起来分析一下这个代码

大家先看main

这里定义了一个CSquare的对象sqr

然后定义了一个CRectangle的对象rect

那sqr是CSquare的

那CSquare里面我们运行了set_side(4)

那么这个4传给了这个int a

a就给了这个side

这个side就是4

那实际上就是这个等于4了

4完了CRectangle convert sqr

CRectangle是CSquare的友元类

所以CRectangle可以访问CSquare的protected跟private成员

也就是说对这个例子来说

CRectangle可以访问side

那这样呢

既然是把sqr传过去了

sqr里面刚才做的事情就是side等于4

传给了这个a

那a.side就等于4

那a.side这个4

那么4就赋给了width和height

CRectangle就可以访问side

而side值的话呢通过这个convert函数

赋给了width和height

就赋给了它

那这时候呢width和height都等于4

运行area函数

它的返回值是height跟width值的乘积

那就是4*4

所以这个return的结果应该是16

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-8 友元类笔记与讨论

也许你还感兴趣的课程:

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