C++之:友元类

Posted This is bill

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
}

以上是关于C++之:友元类的主要内容,如果未能解决你的问题,请参考以下文章

C++ 友元类,友元函数

C++友元类

C++友元类

C++友元类

C++ 友元函数 友元类 friend class

YTU 2436: C++ 习题 输出日期时间--友元类