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

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

  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. go 结构体2 文法

    结构体文法表示通过结构体字段的值作为列表来新分配一个结构体. 使用 Name: 语法可以仅列出部分字段.(字段名的顺序无关.) 特殊的前缀 & 返回一个指向结构体的指针. //分配的v1结构体 ...

  2. springboot项目在IDEA根据不同的开发人员读取不同的配置文件

    IDEA启动项目打开项目的配置文件,修改Program argument为--spring.profiles.active=developerName启动项目,即可 命令行方式启动项目 java -j ...

  3. Nginx学习笔记(三):Nginx 请求处理

    Request Nginx 中的 ngx_http_request_t 是对一个 http 请求的封装: 一个 http 请求包含:请求行.请求头.请求体,响应行.响应头.响应体 Nginx 处理请求 ...

  4. Session共享问题---理论

    随着网站访问量增加,初期的一台服务器已经完全不能支持业务,这个时候我们就需要增加服务器设备,来抗住请求的增量,如下所示: 负载均衡的目的本来就是要为了平均分配请求,所以没有固定第一次访问和第二次访问的 ...

  5. Mysql高可用集群环境介绍

    MySQL高可用集群环境搭建 01.MySQL高可用环境方案 02.MySQL主从复制原理 03.MySQL主从复制作用 04.在Linux环境上安装MySQL 05.在MySQL集群环境上配置主从复 ...

  6. .NET Core api部署到IIS上405的问题

    今天部署到iis 服务器上,api的put请求一直报405.其他像get post都没问题. google了半天,找到两种解决方案,亲测都可以.但我个人认为不是最理想的解决方案. 1.IIS拒绝PUT ...

  7. sqlyog无操作一段时间后重新操作会卡死问题

    在使用 sqlyog 的过程中,遇到了这种情况:打开一个连接,进行了一些操作之后,过一段时间没有操作,然后再来操作会卡死一段时间,等一段时间后操作完成了继续进行其它操作,又很流畅了.但是过一段时间不操 ...

  8. Java Web-Filter and listener

    Java Web-Filter and listener Filter:过滤器 概述 拦截请求,完成一些特殊的功能. 过滤器的作用: 一般用于完成通用的一些操作,例如登录验证(通过session来判断 ...

  9. POJ1083(Moving Tables)--简单模拟

    题目链接:http://poj.org/problem?id=1083 如图所示在一条走廊的两侧各有200个房间,现在给定一些成对的房间相互交换桌子,但是走廊每次只能通过一组搬运, 也就是说如果两个搬 ...

  10. default(Nullable(type)) vs default(type)

    default(Nullable<long>) == null default(long?) == null default(long) == 0L