(一)定义:友元函数是指某些虽然不是成员却能够访问类的所有成员的函数。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有者的同意)。

(二)使用非友元函数将两个对象中的变量进行相加

  1. #include <iostream>
  2. #include <string.h>
  3. #include <unistd.h>
  4.  
  5. using namespace std;
  6.  
  7. class Point {
  8. private:
  9. int x;
  10. int y;
  11.  
  12. public:
  13. Point() {}
  14. Point(int x, int y) : x(x), y(y) {}
  15.  
  16. int getX(){ return x; }
  17. int getY(){ return y; }
  18. void setX(int x){ this->x = x; }
  19. void setY(int y){ this->y = y; }
  20. void printInfo()
  21. {
  22. cout<<"("<<x<<", "<<y<<")"<<endl;
  23. }
  24. };
  25.  
  26. Point add(Point &p1, Point &p2)
  27. {
  28. Point n;
  29. n.setX(p1.getX()+p2.getX());
  30. n.setY(p1.getY()+p2.getY());
  31. return n;
  32. }
  33.  
  34. int main(int argc, char **argv)
  35. {
  36. Point p1(, );
  37. Point p2(, );
  38.  
  39. Point sum = add(p1, p2);
  40. sum.printInfo();
  41.  
  42. return ;
  43. }

(三)使用友元函数进行两个对象中变量的相加

  1. #include <iostream>
  2. #include <string.h>
  3. #include <unistd.h>
  4.  
  5. using namespace std;
  6.  
  7. class Point {
  8. private:
  9. int x;
  10. int y;
  11.  
  12. public:
  13. Point() {}
  14. Point(int x, int y) : x(x), y(y) {}
  15.  
  16. int getX(){ return x; }
  17. int getY(){ return y; }
  18. void setX(int x){ this->x = x; }
  19. void setY(int y){ this->y = y; }
  20. void printInfo()
  21. {
  22. cout<<"("<<x<<", "<<y<<")"<<endl;
  23. }
  24. friend Point add(Point &p1, Point &p2);
  25. };
  26.  
  27. Point add(Point &p1, Point &p2)
  28. {
  29. Point n;
  30. n.x = p1.x+p2.x;
  31. n.y = p1.y+p2.y;
  32. return n;
  33. }
  34.  
  35. int main(int argc, char **argv)
  36. {
  37. Point p1(, );
  38. Point p2(, );
  39.  
  40. Point sum = add(p1, p2);
  41. sum.printInfo();
  42.  
  43. return ;
  44. }

009_linuxC++之_友元函数的更多相关文章

  1. C++_友元函数

    1.为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率       具体来说:为了使其他类的成员函数直接访问该类的私有变量       即:允许外面的类或函数去访问类的私有变量和保护 ...

  2. C++_友元函数总结(转)

     原文地址:http://blog.csdn.net/insistgogo/article/details/6608672   1.为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率 ...

  3. C++_友元函数(转)

    1.为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率 具体来说:为了使其他类的成员函数直接访问该类的私有变量 即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同 ...

  4. String类型_static成员_动态内存分配_拷贝构造函数_const关键字_友元函数与友元类

    1:String类型 #include <iostream> using namespace std; int main() { //初始化方法 string s1 = "hel ...

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

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

  6. c++友元函数

    c++友元函数分两类: 一://友员全居函数 /*#include <iostream>using namespace std;class aaa{    friend void prin ...

  7. 重载运算符:类成员函数or友元函数

    类成员函数: bool operator ==(const point &a)const { return x==a.x; } 友元函数: friend bool operator ==(co ...

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

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

  9. [Reprint]C++友元函数与拷贝构造函数详解

    这篇文章主要介绍了C++友元函数与拷贝构造函数,需要的朋友可以参考下   一.友元函数 1.友元函数概述: (1)友元函数是定义在一个类外的普通函数.友元函数和普通函数的定义一样;在类内必须将该普通函 ...

随机推荐

  1. flask使用tablib导出excel数据表

    在网页中常常有导出数据的需求,尤其是一下管理类平台.在flask中要导出excel数据表,通常可以使用xlwt库,创建文件并逐行写入数据,但是使用起来总是感觉很麻烦.tablib库相对操作更加方便. ...

  2. WUST 设计模式 实验一 单例模式的应用

    实验一 单例模式的应用 实验目的 1.掌握单例模式(Singleton)的特点: 2.分析具体问题,使用单例模式进行设计. 实验内容和要求 很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的 ...

  3. glib系列1 编译

    1 安装 meson glib 使用 meson进行构建,需要python3,首先下载meson, meson/meson.py 就是程序本身了,可以直接运行 git clone https://gi ...

  4. VBA算术运算符

    以下是VBA支持算术运算符. 假设变量A=5,变量B=10,那么 - 运算符 描述 示例 + 两个操作数相加 A + B = 15 - 两个操作数相减 A - B = -5 * 两个操作数相乘 A * ...

  5. zlog日志函数库

    在C的世界里面没有特别好的日志函数库(就像JAVA里面的的log4j,或者C++的log4cxx).C程序员都喜欢用自己的轮子.printf就是个挺好的轮子,但没办法通过配置改变日志的格式或者输出文件 ...

  6. docker搭建单机ELK

    yum -y install epel-release yum -y install python-pip // 更新pip pip install --upgrade pip // 安装docker ...

  7. c# 运算符和表达式

  8. python3和python2共存

    在window上同时安装py3.5和py2.7,但是命令行敲击python命令后,默认只出现py2.7的信息,敲击python3命令,提示未知的命令. 从网上查了一下,虽然环境变量都添加对了,但是可执 ...

  9. sk_buff内核api函数记录

    1.alloc_skb() 上层协议要发送数据包的时候或网络设备准备接收数据包的时候调用 2.kfree_skb() 释放sk_buff结构体 3.skb_put() 在数据区的末端添加某协议的尾部 ...

  10. [GDOI2014]采集资源

    题目概述 题目描述 魔兽争霸3中,战略资源的采集通过使用农民.苦工.小精灵以及寺僧来进行. 在魔兽争霸4的开发中,玻璃渣觉得这种模式太过单一,于是他们想添加更多的单位来使采集的模式更加丰富. 在新的模 ...