#include <iostream>using namespace std;
//实现运算符的重载
class A
{
public:A(int real=0,int imaginary=0 ){this->real=real;this->imaginary=imaginary;}void printf(){cout<<this->real<<" + "<<this->imaginary<<"j\n";}friend A operator+(A &a1,A &a2);//这里的友元函数是取决于私有属性
public:A  operator-(A &t1)//这个一定要表明类型的,因为这不是构造函数,所以必须有类型。{this->real=this->real-t1.real;this->imaginary=this->imaginary-t1.imaginary;return * this;}
private:int real;int imaginary;
};A operator+(A &a1,A &a2)
{A tem(a1.real+a2.real , a1.imaginary+a2.imaginary);return tem;
}int main()
{A c1(1,2), c2(3,4);A  c3;c3=c1+c2;c3.printf();// A t1;//c1.operator-(c2);A c4 =c1-c2;c4.printf();system("pause");return 0;
}

  因为,类的成员变量一般是私有的,所以,类的外部除了友元函数其他函数都不能调用类的私有变量。

转载于:https://www.cnblogs.com/xiaochige/p/6581920.html

运算符中的二元重载,为什么要调用友元函数而不是全局函数的问题相关推荐

  1. mybatis接口中的方法重载_MyBatis的Mapper接口以及Example的实例函数及详解

    一.mapper接口中的方法解析 mapper接口中的函数及方法 方法 功能说明 int countByExample(UserExample example) thorws SQLException ...

  2. 运算符重载为类的友元函数

    运算符重载为类的友元函数 友元函数通过类的对象可以访问类的公有.保护和私有成员,也就是类的所有成员友元函数都能访问到.所以运算符重载为类的友元函数以后也可以访问类的所有成员. 与运算符重载为成员函数时 ...

  3. Java中方法的重载(overload)与重写/覆写(override)

    重载-Overload 函数的方法参数个数或类型不一致,称为方法的重载. 从含义上说,只要求参数的个数或参数的类型不一致就说两个函数是重载函数,而至于返回值是否一样,没关系.同时,重载可以发生在同一个 ...

  4. 【C/C++学院】(8)全局函数和类成员函数转化/友元/操作符重载

    1.全局函数和类成员函数转化 全局函数和成员函数的相互转化:只需要修改一个指向本类的this指针: #include <iostream> using namespace std;clas ...

  5. C 运算符中不能重载的是哪些

    C 运算符中不能重载的有:1.条件运算符"?:":2.成员访问运算符".":3.域运算符"::":4.长度运算符"sizeof&q ...

  6. 栈内存 ,堆内存区别 C++ 动态内存 == 与equal区别 复合函数奇偶性 三角函数转换公式: 虚函数和纯虚函数: C++ 中的运算符重载 数据封装,数据抽象 C++ 接口(抽象类

    目录 栈内存 ,堆内存区别 C++ 动态内存 == 与equal区别 复合函数奇偶性 三角函数转换公式: 虚函数和纯虚函数: C++ 中的运算符重载 数据封装,数据抽象 C++ 接口(抽象类): #和 ...

  7. java 两个运算符重载_Java中的操作符重载

    0.Java操作符重载 Java中我们可以执行如下语句: String fullName = "hongliang "+"cao"; System.out.pr ...

  8. java 返回值判断_在Java中判断方法重载的条件除了参数外,还可以通过返回值类型判断。_学小易找答案...

    [单选题]若int x;且有下面的程序片断,则输出结果是() . for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "** ...

  9. 【Groovy】集合遍历 ( 操作符重载 | 集合中的 “ + “ 操作符重载 | 集合中的 “ - “ 操作符重载 | 代码示例 )

    文章目录 一.集合中的 " + " 操作符重载 二.集合中的 " - " 操作符重载 三.完整代码示例 一.集合中的 " + " 操作符重载 ...

最新文章

  1. 基于yolov5和deepsort的行人车辆的检测、跟踪和计数(课程设计)
  2. zabbix mysql路径_ZABBIX数据库迁移目录
  3. 3、Power Map—入门之楼盘分布图
  4. 《那些年啊,那些事——一个程序员的奋斗史》——60
  5. ArcGIS Desktop 10.5 安装教程(win10环境下)
  6. windows平台oracle无法调度,windows 2003+Legato networker+oracle 9i (框架)
  7. apache cxf_Wildfly,Apache CXF和@SchemaValidation
  8. LeetCode 858. 镜面反射(最小公倍数/最大公约数)
  9. Java ObjectStreamClass lookup()方法与示例
  10. 如何让测试同学理解并发锁
  11. 26种对付反调试的方法
  12. Logback 深入分析
  13. 【VS2015】 C++实现硬件ID的查询
  14. JavaScript视频系统教程
  15. android9 三星 港版,三星S9官方港版安卓9固件系统升级更新包:TGY-G9600ZHU5CSFB
  16. 互联网金融爬虫怎么写-第一课 p2p网贷爬虫(XPath入门)
  17. 沿海当地平均海面与85面高程关系
  18. powershell 汉洛塔
  19. 3t硬盘分区 Linux win,3TB使用大难题 得先学会怎么分区_内存硬盘行情-中关村在线...
  20. 视频类网站的简单研究

热门文章

  1. spring aop 拦截业务方法,实现权限控制
  2. Python 全栈开发 -- 开发环境篇
  3. Android怎么访问私有数据(5)
  4. net平台c#语言如何实现支付宝payto接口
  5. 测试start backup和ndb_restore
  6. 《Linux内核设计与实现》读书笔记 - 目录 (完结)
  7. numpy和str互转
  8. 罗辑思维在全链路压测方面的实践和工作笔记
  9. vue 加载体验优化
  10. Spring Boot集成kafka完整版