`
saybody
  • 浏览: 863948 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

C++学习摘要之六:友元函数与友元类

阅读更多

第六章友元函数与友元类

采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提供了工序的运行效率,但又破坏了类的封装性。
友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下:
friend 类型 函数名(形式参数);
友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们是没有区别的,都说明是该类的一个友元函数。
一个函数可以是多个类的友元函数,不过需要在哥各个类中分别声明。
友元函数的调用与一般函数的调用方式和原理一致。
当希望一个类可以存取另一个类的私有成员时,可以将该类声明为另一类的友元类。定义友元类的语句格式如下:
friend class 类名;
其中:friend和class是关键字,类名必须是程序中的一个已定义过的类。
例如,以下语句说明类B是类A的友元类:
class A
{
public:
friend class B;
};
经过以上说明后,类B的所有成员函数都是类A的友元函数,且能存取类A的私有成员和保护成员。
注意:

(1)友元关系不具有对称性,即如果类B是类A的友元类,并不隐含类A是类B的友元类。

(2)友元关系不具有传递性,即如果类B是类A的友元类,而类C是类B的友元类,这并不隐含类C是类A的友元类。

分享到:
评论

相关推荐

    C++友元函数及友元类全总结

    本文档详细介绍了C++友元函数及友元类,方便大家对比学习

    C++之友元:友元函数和友元类详解

    友元函数友元类 二、友元函数友元函数在类作用域外定义,但它需要在类体中进行说明为了与该类的成员函数加以区别,定义的方式是在类中用关键字friend说明该函数,格式如下: friend 类型 友元函数名(参数表);友元的...

    c++ demo,重载运算符,友元函数的实现

    c++ demo,重载运算符,友元函数的实现

    NDK14_C++基础:友元,模板方法,模板类,类型转换

    一 友元 类似 java 中享元模式:实例的共享(ImageLoader Lru 算法 存储图片) 友元:类或函数的共享 优点:提高效率、表达清晰 缺点:破坏封装性 ...友元函数不能被派生类继承 友元函数不能使用this

    实验二:友元和函数重载

    设计一个友元函数,比较某两个学生成绩的高低 2. 创建一个Message类,其构造函数带有一个string类型的默认参数 3. 制定自己的C++编码规范;编制一个程序,度量由用户指定的、严格按照C++编码规范编写的C++源文件...

    c++模板友元函数 友元类

    关于c+模板之友元类友元函数的实例化,图形界面之矩形。

    友元函数代码实例

    友元函数,类外普通函数声明为类的友元,之后即可与类共享数据

    c++友元函数与友元类的深入解析

    友元函数和友元类的需要:类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这又...

    编写一个友元函数,求两个日期之间相差的天数;

    日期类Date包含日期的年、月、日三个数数据成员,编写一个友元函数,求两个日期之间相差的天数; 重要的是理顺:这个函数不是Date类的成员函数

    C++友元成员函数使用实例

    C++友元函数的使用,这个友元函数是另一个类的成员函数

    C++友元函数和友元类的学习心得[归纳].pdf

    C++友元函数和友元类的学习心得[归纳].pdf

    友元函数详细讲解

    友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有...

    C++静态成员、友元函数、类模板实验

    C++静态成员、友元函数、类模板实验,共3个任务

    C++运算符重载函数作为类成员函数和友元函数.doc

    C++运算符重载函数作为类成员函数和友元函数.doc

    C++:友元(看这一篇就够了)-c++友元-孙 悟 空的博客-CSDN博客.pdf

    在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术 **友元的目的** 就是让一个函数或者类 访问另一个类中的私有成员 **友元的关键字为** ==friend== **友元的三种实现** ...

    C++ 中友元函数与友元类详解

    总的来说,友元分为两类:友元函数与友元类。友元是针对类而言,它提供了一种非类的成员函数来访问类的非公有成员的一种机制。可以把一个函数指定为某类的友元,这个函数称为这个类的友元函数。也可以将类A指定为类B...

    C++友元函数与拷贝构造函数详解

    (1)友元函数是定义在一个类外的普通函数。 友元函数和普通函数的定义一样;在类内必须将该普通函数声明为友元。 (2)友元函数不是成员函数。 不能通过对象来调用,而是直接调用;友元函数可以访问类的公有、受保护以及...

    友元机制计算两点之间的距离

    ② 首先,采用友元函数distance()的方式实现友元接口;其次,采用友元成员distance()的方式实现友元接口;最后,尝试采用友元类的方式实现友元接口。 ③ 对于友元成员和友元类两种实现方式,可以另外定义一个求解两...

    关于c++友元.ppt

    主要讲解c++种的友元类友元函数 可以更好地学习其中的内容 友元在类中担任着十分关键的角色 所以更应该认真学习

Global site tag (gtag.js) - Google Analytics