一、文章来由

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

二、定义

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

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

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++之:友元类的更多相关文章

  1. C++的友元类和友元函数实例

    #include <math.h> #include<iostream> using namespace std; class Point { public: Point(do ...

  2. 不可或缺 Windows Native (20) - C++: 友元函数, 友元类

    [源码下载] 不可或缺 Windows Native (20) - C++: 友元函数, 友元类 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 友元函数 友元类 示例演 ...

  3. C++学习12 友元函数和友元类

    友元函数和友元类在实际开发中较少使用,想快速学习C++的读者可以跳过本节. 一个类中可以有 public.protected.private 三种属性的成员,通过对象可以访问 public 成员,只有 ...

  4. YTU 2619: B 友元类-计算两点间距离

    2619: B 友元类-计算两点间距离 时间限制: 1 Sec  内存限制: 128 MB 提交: 469  解决: 252 题目描述 类Distance定义为类Point的友元类来实现计算两点之间距 ...

  5. C++:友元(非成员友元函数、成员友元函数、友元类)

    3.8  友元:友元函数和友元类 友元函数 :既可以是不属于任何类的非成员函数,也可以是另一个类的成员函数,统称为友元函数.友元函数不是当前类的成员函数,而是独立于类的外部函数,但它可以访问该类所有的 ...

  6. c++ 友元类

    一.友元类相关概念 要将私有成员数据或函数暴露给另一个类,必须将后者声明为友元类. 注意三点: (1)友元关系不能传递 (2)友元关系不能继承 (3)友元关系不能互通

  7. C++学习之友元类和友元函数

    C++学习之友元类和友元函数       模板类声明也可以有友元,模板的友元可以分为以下几类:        1.非模板友元:        2.约束模板友元,即就是友元的类型取决于类被实例化的时候的 ...

  8. C++ 习题 输出日期时间--友元类

    Description 设计一个日期类和时间类,编写display函数用于显示日期和时间.要求:将Time类声明为Date类的友元类,通过Time类中的display函数引用Date类对象的私有数据, ...

  9. C/C++:C++友元类

    C++友元类: 正常情况下,一个类是訪问不到还有一个类的私有成员的. 就像以下这个: #include <iostream> class A{ private: int a; public ...

  10. 友元(友元函数、友元类和友元成员函数) C++

    有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的.例如被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员. 友元(frend)机制允许一个类将 ...

随机推荐

  1. Java线程及Jvm监控工具

    Java线程状态 线程的五种状态 * 新建:new(时间很短) * 运行:runnable * 等待:waitting(无限期等待),timed waitting(限期等待) * 阻塞:blocked ...

  2. UVM基础之------uvm phases机制

    代码的书写顺序会影响代码的实现,在不同的时间做不同的事情,这是UVM phase的设计哲学,UVM phase提供了一个通用的TB phase 解决方案.支持显示的隐式的同步方案,运行时刻的线程控制和 ...

  3. phpcms v9文章内容页调用上一篇下一篇的方法(转)

    phpcms v9文章内容页调用上一篇下一篇的方法如下,魔客吧(www.moke8.com)提示您直接摘取如下代码中的红色部分即可: 上一篇:{$previous_page[url]}" t ...

  4. Windows开启ICMP包回显

  5. How a stack frame works 栈帧的要素与构建步骤

    http://en.citizendium.org/wiki/Stack_frame To use a stack frame, a thread keeps two pointers, often ...

  6. 监听微信端,手机端,ios端的浏览器返回事件,pc端关闭事件

    直接上代码了,可以监听微信端,手机端,iOS端的浏览器返回事件,关闭事件不支持 当进入该页面,我们就给这个history压入一个本地的连接.当点击返回.后退及上一页的操作时,就进行监听,在监听代码中实 ...

  7. Linux 下 Bash 脚本对拍

    背会... #!/bin/bash i= while true ;do ./maker > data.in ./a <data.in> data.out ./b <data.i ...

  8. <MyBatis>入门八 工作原理

    1.获取sqlSessionFactory对象 首先拿到全局配置文件的流对象 创建SqlSessionFactoryBuilder对象,并调用build方法,把流传进去 build方法 创建一个XML ...

  9. LINUX-光盘

    cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force 清空一个可复写的光盘内容 mkisofs /dev/cdrom > ...

  10. 利用python去调用shell命令时候的踩到的坑

    shell中 True的返回值是0 False的返回值是1 Python中 True的返回值是1 False的返回值是0