首页 > 代码库 > C++之:友元类

C++之:友元类

一、文章来由

上一篇写了友元函数,这一次写一个姊妹篇,继续深入探究一下友元类。

二、定义

友元类的全部成员函数都是还有一个类的友元函数。都能够訪问还有一个类中的隐藏信息(包含私有成员和保护成员)。

当希望一个类能够存取还有一个类的私有成员时,能够将该类声明为还有一类的友元类。定义友元类的语句格式例如以下:

friend class 类名;

当中:friend和class是关键字,类名必须是程序中的一个已定义过的类。

三、样例

#include <iostream>
using namespace std;

class Radius
{
    friend class Circle;   //声明Circle为Radius的友元类
    friend void Show_r(Radius &n);     //声明Show_r为友元函数

public:
Radius(int x)
{
    r = x;
}
~Radius()
{
}

private:
    int r;
};

void Show_r(Radius &n)
{
    cout<<"圆的半径为: "<<n.r<<endl;    //调用Radius对象的私有成员变量r
}

class Circle
{
public:
    Circle(){}
    ~Circle(){}

double area(Radius a)
{
    s = a.r * a.r * 3.1415926;             //调用Radius对象的私有成员变量r
    return s;
}

private:
    double s;
};

int main(int argc, char *argv[])
{
    Radius objRadius(9);
    Circle objCircle;

    Show_r( objRadius );
    cout<<"面积为:"<<objCircle.area(objRadius)<<endl;

    return 0;
}
<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

C++之:友元类