#include <iostream>
using namespace std;

class myClass1
{
public :
  myClass1():n(0){};

void setn(int tmpn){this->n=tmpn;}

void show(){cout<<n<<endl;}

private:

//友元类
    friend class myClass2;
    //使用友元函数来改变myclass1中成员变量n的值
    friend void setnF1(myClass1 & tmpClass,int tmpn);

int n;
};

class myClass2
{
public:
    //使用友元类中的成员函数来改变myclass1中成员变量n的值
     void setnF2(myClass1  & tmpClass,int tmpn){tmpClass.n=tmpn;}

};

void setnF1(myClass1 & tmpClass,int tmpn)
{
     tmpClass.n=tmpn;
}

int main()
{
    myClass1 p1;
    myClass2 p2;
    cout<<"p1的成员变量n默觉得:"<<endl;
    p1.show();

cout<<"使用myClass1自己的成员函数设置后:"<<endl;
    p1.setn(100);
    p1.show();

cout<<"使用友元函数设置后:"<<endl;
    setnF1(p1,101);
    p1.show();

cout<<"使用友元类设置后:"<<endl;
    p2.setnF2(p1,102);
    p1.show();

return 0;
}

运行结果:(点击图片可放大)

C++中的友元函数和友元类相关推荐

  1. 模板类中使用友元函数的方式,派生类友元函数对基类的成员使用情况

    在一般友元函数的前面加上 template<typename T),注意在函数的声明和定义处都要加这个模板 例如: //模板类,长方体类 template <typename Elemen ...

  2. C++ 笔记(30)— 友元函数与友元类

    我们知道类的私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行.这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书写的麻烦. ...

  3. C++友元函数和友元类(C++ friend)详解

    在看VISP视觉库的时候遇到友元函数: Friends void swap (vpDetectorAprilTag &o1, vpDetectorAprilTag &o2) 在定义一个 ...

  4. c++友元函数与友元类

    友元函数和友元类的需要: 类具有封装和信息隐藏的特性.只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的.非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这 ...

  5. C++友元函数和友元类(三)

    友元类 不仅可以将一个函数声明为一个类的"朋友",还可以将整个类声明为另一个类的"朋友",这就是友元类.友元类中的所有成员函数都是另外一个类的友元函数. 例如将 ...

  6. C++友元函数和友元类(一)

    在 C++ 中,一个类中可以有 public.protected.private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员.现在,我们 ...

  7. friend之友元函数和友元类

    // friend_func.cpp : Defines the entry point for the console application. 写一个函数求两个点的中点 //友元函数可以访问类的私 ...

  8. public 函数_Chapter18:友元函数和友元类

    这一章的问题从"如何畅通无阻的访问另一个类"开始,类的属性有private.protected.public,根据继承权限有不同的访问方式.但是类之间的关系不一定是继承,有时一个类 ...

  9. C++语言基础(15)-友元函数和友元类

    一个类中可以有 public.protected.private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员.现在,我们来介绍一种例外情 ...

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

    友元的作用:提高了程序的运行效率(使得普通函数可以直接访问类的保护数据,避免了类成员函数的频繁调用,即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和隐藏性,使得非成员函数可以访问 ...

最新文章

  1. ubuntu 10.10 修改下载源的方法
  2. android retrofit 2.0公共参数,Retrofit2.0 添加公共参数
  3. ZYNQ PS端输出不准确时钟供PL使用
  4. AndroidStudio_安卓原生开发_Android开发中界面调试很别扭? 设置应用屏宽屏高_应用大小_design_width_in_dp---Android原生开发工作笔记140
  5. Scala 获取当前时间
  6. 华为 博士 实习_华科女博士年薪156入职华为!最新回应:在深圳也难买房…
  7. docker安装oracle11g史上最全步骤(带图文)
  8. 软考中级数据库系统工程师
  9. linux关闭rpcbind服务,rpcbind服务 关闭
  10. 网络协议篇之CWMP协议(三)—— RPC方法
  11. 如何选择关键词以及关键词分析优化
  12. 【开源电机驱动】如何计算电机参数
  13. 思考与总结【3】:专注于一件事
  14. 《算法图解》----第十章:K最邻近算法
  15. JS输出100以内的素数
  16. python语音建模_该系统实现了基于深度框架的语音识别中的声学模型和语言模型建模...
  17. 计算机算法设计与分析(国科大考试)
  18. 普中51pwm_51单片机实现PWM输出功能的两种方法解析
  19. 南京理工大学计算机复试题库,南京理工大学考研复试计算机数据库试题
  20. 4 树莓派的分辨率和中文设置

热门文章

  1. 决策树构建算法之—C4.5
  2. String、StringBuilder类连接字符串操作的时间差异
  3. 基于干净语言和好奇心的敏捷指导
  4. awk文本工具按列计算和
  5. Cocos Creator导出场景和预制的问题
  6. js原生代码编写一个鼠标在页面移动坐标的检测功能,兼容各大浏览器
  7. 远程接入-天翼5系统让ERP穿越时空!
  8. 【源码系列】Eureka源码分析
  9. mysql新增用户和删除用户
  10. flink的TimeCharacteristic(转载)