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;
}
相关文章
|
5天前
|
存储 编译器 C语言
c++的学习之路:5、类和对象(1)
c++的学习之路:5、类和对象(1)
21 0
|
30天前
|
存储 C++ 容器
C++入门指南:string类文档详细解析(非常经典,建议收藏)
C++入门指南:string类文档详细解析(非常经典,建议收藏)
39 0
|
5天前
|
C++
c++的学习之路:7、类和对象(3)
c++的学习之路:7、类和对象(3)
19 0
|
4天前
|
设计模式 Java C++
【C++高阶(八)】单例模式&特殊类的设计
【C++高阶(八)】单例模式&特殊类的设计
|
4天前
|
编译器 C++
【C++基础(八)】类和对象(下)--初始化列表,友元,匿名对象
【C++基础(八)】类和对象(下)--初始化列表,友元,匿名对象
|
8天前
|
存储 安全 C语言
【C++】string类
【C++】string类
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
10天前
|
编译器 C++
标准库中的string类(上)——“C++”
标准库中的string类(上)——“C++”
|
10天前
|
编译器 C++
自从学了C++之后,小雅兰就有对象了!!!(类与对象)(中)——“C++”
自从学了C++之后,小雅兰就有对象了!!!(类与对象)(中)——“C++”
|
10天前
|
存储 编译器 C++
自从学了C++之后,小雅兰就有对象了!!!(类与对象)(上)——“C++”
自从学了C++之后,小雅兰就有对象了!!!(类与对象)(上)——“C++”