采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一
些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为
友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的
私有成员。
友元函数
:
友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下:
friend 类型 函数名(形式参数);
友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们是没有区别的,都说明是该类的一个友元函数。
一个函数可以是多个类的友元函数,只需要在各个类中分别声明。
友元函数的调用与一般函数的调用方式和原理一致。
友元类
:
友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。
当希望一个类可以存取另一个类的私有成员时,可以将该类声明为另一类的友元类。定义友元类的语句格式如下:
friend class 类名;
其中:friend和class是关键字,类名必须是程序中的一个已定义过的类。
例如,以下语句说明类B是类A的友元类:
class A
{
…
public:
friend class B;
…
};
经过以上说明后,类B的所有成员函数都是类A的友元函数,能存取类A的私有成员和保护成员。
使用友元类时注意:
(1)
友元关系不能被继承。
(2) 友元关系是单向的,不具有交换性。
若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。
(3) 友元关系不具有传递性。
若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的申明
分享到:
相关推荐
标题"友元函数和友元类"涉及到两个核心概念:友元函数和友元类。 **友元函数** 是一个非成员函数,但它被声明为某个类的友元,这意味着它可以直接访问该类的私有和受保护成员。友元函数不是类的成员,因此它们不在...
友元函数和友元类的定义及使用 友元函数和友元类是一种特殊的类关系,在 C++ 编程语言中.play a crucial role in defining the relationship between classes. 在本文中,我们将探讨友元函数和友元类的定义及使用,...
友元函数和友元类的定义及使用、运算符重载 本文将详细讲解友元函数和友元类的定义及使用,并结合实践案例,演示如何使用友元函数和友元类实现复杂的功能。同时,本文还将讲解运算符重载的概念和使用方法,并提供...
友元函数和友元类的定义及使用 在 C++ 编程语言中,友元函数和友元类是两个重要的概念,它们在对象之间的关系和交互中扮演着关键角色。下面将详细介绍友元函数和友元类的定义及使用。 一、友元函数 友元函数是指...
友元函数和友元类的定义及使用 友元函数和友元类是C++编程语言中两个重要的概念,它们在对象oriented programming(面向对象编程)中扮演着重要角色。本文将详细介绍友元函数和友元类的定义及使用,包括它们的概念...
在C++中,友元分为友元函数和友元类。 1. 友元函数(Friend Function) 友元函数是在类的外部定义的函数,但被声明为该类的朋友,因此它可以访问该类的私有和受保护的成员。在例子中,`show()`函数被声明为`...
友元函数和友元类打破了这种限制,增加了代码的灵活性,但同时也可能降低数据的安全性。 友元函数(Friend Function)是在类外定义的函数,它不是类的成员,但被声明为类的友元后,可以访问该类的所有私有和受保护...
友元函数和友元类的概念在C++中虽然不常用,但在某些特定情况下非常有用,比如实现数据结构如链表或图形等。 1. 友元函数(Friend Function) 友元函数是在类的定义外部定义的函数,它可以访问类的私有和受保护成员...
本文将详细介绍C++中的友元函数和友元类,以及它们的使用方法和注意事项。 #### 二、友元函数 **1. 为什么引入友元函数** 在C++中,当需要实现类之间的数据共享时,传统的做法是通过设置公共成员函数来访问私有...
友元函数和友元类是类与类之间、类与函数之间一种特殊的授权关系。通过关键字“friend”在类的定义中声明,被声明为友元的函数或类就可以访问该类的所有成员,无论这些成员的访问权限是public、protected还是private...
友元函数和友元类的需要:类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这又...
1. **类间关系**:友元类和被友元化的类之间建立了特殊的关系,允许前者访问后者的私有和保护成员。 2. **成员函数特权**:友元类的任何成员函数都可以访问其友元类的私有和保护成员。 3. **谨慎使用**:由于友元类...
在实际开发中,友元函数和友元类可以用于实现数据共享、接口设计等目的,但需要谨慎使用,以免破坏数据的隐蔽性和可维护性。 友元函数及友元类是 C++ 编程语言中的一种重要机制,可以实现数据共享、接口设计等目的...
在 C++ 程序设计中,友元函数和友元类是两个重要的概念,它们允许其他类或函数访问当前类的私有成员,从而实现了数据隐藏和访问控制。 什么是友元? 友元是指允许其他类或函数访问当前类的私有成员的类或函数。友元...
友元类、友元函数和友元成员函数是C++中实现类间交互的重要方式,它们帮助我们在设计复杂的数据结构和算法时打破封装的限制,提高代码的灵活性和效率。下面我们将深入探讨这三个概念及其工作原理。 首先,**友元类*...
除了友元函数,还有一种称为友元类(Friend Class)的概念,即一个类可以声明另一个类为它的友元,使得友元类可以访问声明者的私有和保护成员。友元类的声明方式为: ```cpp friend class 友元类名; ``` 友元类的...
C++友元函数和友元类的学习心得[归纳].pdf
以下是关于C++ `friend`函数和友元类的详细说明: 1. **友元函数**: - 友元函数是一种非成员函数,但它可以访问类的私有和受保护成员。 - 在类中声明一个函数为友元意味着该函数可以像类的成员函数一样操作私有...
友元函数不是类的成员,但可以访问类的私有和保护成员。在运算符重载中,友元函数常用于需要同时操作两个对象或者操作数不是类对象的情况。例如,类`B`的`operator+`和`operator-`就是友元函数: ```cpp friend B ...
友元函数和友元类是实现这一机制的两种方式。这次我们将深入探讨这两个概念。 **友元函数** 友元函数不是类的成员,但它被声明为某个类的友元后,可以访问该类的私有和保护成员。在C++中,友元函数的声明通常放在...