来自:

http://blog.csdn.net/wbj1234566/article/details/2256642

简单的讲 :把类外部的类或函数声明为友元类和友元函数,使其能直接访问类中的私有成员。

格式: friend  类 或 函数 声明

//此语句可以放在类中的任意位置,与访问权限保留字无关。

需要注意几个方面:

1.友元关系是不可以传递的。

 比方说你是我的友元而Joe是你的友元,但这并不意味着Joe是我的友元。

2.友元关系不能继承。

3.友元关系不是互通。

把class A设置为class B的友元并不会使得class B成为class A的友元,也许你愿意把你的秘密告诉我,但是,这并不意味着我愿意把我的秘密告诉你。

具体的用法详细见下面的示例:

 

关于C++中友元类和友元函数的示例讲解#include <cstdlib>
关于C++中友元类和友元函数的示例讲解#include <iostream>
关于C++中友元类和友元函数的示例讲解
关于C++中友元类和友元函数的示例讲解
using namespace std;
关于C++中友元类和友元函数的示例讲解
关于C++中友元类和友元函数的示例讲解
class Radius
关于C++中友元类和友元函数的示例讲解
{
关于C++中友元类和友元函数的示例讲解    friend 
class Circle;                  //声明Circle为Radius的友元类
关于C++中友元类和友元函数的示例讲解
    friend void Show_r(Radius &n);           //声明Show_r为友元函数
关于C++中友元类和友元函数的示例讲解
    public:
关于C++中友元类和友元函数的示例讲解        Radius(
int x)
关于C++中友元类和友元函数的示例讲解        
{
关于C++中友元类和友元函数的示例讲解            r 
= x;
关于C++中友元类和友元函数的示例讲解        }

关于C++中友元类和友元函数的示例讲解        
~Radius()
关于C++中友元类和友元函数的示例讲解        
{
关于C++中友元类和友元函数的示例讲解        }

关于C++中友元类和友元函数的示例讲解    
private:
关于C++中友元类和友元函数的示例讲解        
int r;
关于C++中友元类和友元函数的示例讲解}
;
关于C++中友元类和友元函数的示例讲解
关于C++中友元类和友元函数的示例讲解
void Show_r(Radius &n)
关于C++中友元类和友元函数的示例讲解
{
关于C++中友元类和友元函数的示例讲解    cout
<<"圆的半径为: "<<n.r<<endl;          //调用Radius对象的私有成员变量r
关于C++中友元类和友元函数的示例讲解
}

关于C++中友元类和友元函数的示例讲解
关于C++中友元类和友元函数的示例讲解
class Circle
关于C++中友元类和友元函数的示例讲解
{
关于C++中友元类和友元函数的示例讲解    
public:
关于C++中友元类和友元函数的示例讲解        Circle()
关于C++中友元类和友元函数的示例讲解        
{
关于C++中友元类和友元函数的示例讲解        }

关于C++中友元类和友元函数的示例讲解        
~Circle()
关于C++中友元类和友元函数的示例讲解        
{
关于C++中友元类和友元函数的示例讲解        }

关于C++中友元类和友元函数的示例讲解        
double area(Radius a)
关于C++中友元类和友元函数的示例讲解        
{
关于C++中友元类和友元函数的示例讲解            s 
= a.r * a.r * 3.1415926;  //调用Radius对象的私有成员变量r
关于C++中友元类和友元函数的示例讲解
            return s;
关于C++中友元类和友元函数的示例讲解        }

关于C++中友元类和友元函数的示例讲解    
private:
关于C++中友元类和友元函数的示例讲解        
double s;
关于C++中友元类和友元函数的示例讲解}
;
关于C++中友元类和友元函数的示例讲解
关于C++中友元类和友元函数的示例讲解
int main(int argc, char *argv[])
关于C++中友元类和友元函数的示例讲解
{
关于C++中友元类和友元函数的示例讲解    Radius objRadius(
9);
关于C++中友元类和友元函数的示例讲解    Circle objCircle;
关于C++中友元类和友元函数的示例讲解    
关于C++中友元类和友元函数的示例讲解    Show_r(objRadius);
关于C++中友元类和友元函数的示例讲解    cout
<<"面积为:"<<objCircle.area(objRadius)<<endl;
关于C++中友元类和友元函数的示例讲解    
关于C++中友元类和友元函数的示例讲解    system(
"PAUSE");
关于C++中友元类和友元函数的示例讲解    
return EXIT_SUCCESS;
关于C++中友元类和友元函数的示例讲解}

相关文章:

  • 2021-08-13
  • 2021-09-11
  • 2021-09-24
  • 2021-07-05
  • 2021-05-17
  • 2021-10-22
猜你喜欢
  • 2021-09-08
  • 2022-12-23
  • 2021-07-05
相关资源
相似解决方案