运算符中的二元重载,为什么要调用友元函数而不是全局函数的问题
#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
运算符中的二元重载,为什么要调用友元函数而不是全局函数的问题相关推荐
- mybatis接口中的方法重载_MyBatis的Mapper接口以及Example的实例函数及详解
一.mapper接口中的方法解析 mapper接口中的函数及方法 方法 功能说明 int countByExample(UserExample example) thorws SQLException ...
- 运算符重载为类的友元函数
运算符重载为类的友元函数 友元函数通过类的对象可以访问类的公有.保护和私有成员,也就是类的所有成员友元函数都能访问到.所以运算符重载为类的友元函数以后也可以访问类的所有成员. 与运算符重载为成员函数时 ...
- Java中方法的重载(overload)与重写/覆写(override)
重载-Overload 函数的方法参数个数或类型不一致,称为方法的重载. 从含义上说,只要求参数的个数或参数的类型不一致就说两个函数是重载函数,而至于返回值是否一样,没关系.同时,重载可以发生在同一个 ...
- 【C/C++学院】(8)全局函数和类成员函数转化/友元/操作符重载
1.全局函数和类成员函数转化 全局函数和成员函数的相互转化:只需要修改一个指向本类的this指针: #include <iostream> using namespace std;clas ...
- C 运算符中不能重载的是哪些
C 运算符中不能重载的有:1.条件运算符"?:":2.成员访问运算符".":3.域运算符"::":4.长度运算符"sizeof&q ...
- 栈内存 ,堆内存区别 C++ 动态内存 == 与equal区别 复合函数奇偶性 三角函数转换公式: 虚函数和纯虚函数: C++ 中的运算符重载 数据封装,数据抽象 C++ 接口(抽象类
目录 栈内存 ,堆内存区别 C++ 动态内存 == 与equal区别 复合函数奇偶性 三角函数转换公式: 虚函数和纯虚函数: C++ 中的运算符重载 数据封装,数据抽象 C++ 接口(抽象类): #和 ...
- java 两个运算符重载_Java中的操作符重载
0.Java操作符重载 Java中我们可以执行如下语句: String fullName = "hongliang "+"cao"; System.out.pr ...
- java 返回值判断_在Java中判断方法重载的条件除了参数外,还可以通过返回值类型判断。_学小易找答案...
[单选题]若int x;且有下面的程序片断,则输出结果是() . for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "** ...
- 【Groovy】集合遍历 ( 操作符重载 | 集合中的 “ + “ 操作符重载 | 集合中的 “ - “ 操作符重载 | 代码示例 )
文章目录 一.集合中的 " + " 操作符重载 二.集合中的 " - " 操作符重载 三.完整代码示例 一.集合中的 " + " 操作符重载 ...
最新文章
- 基于yolov5和deepsort的行人车辆的检测、跟踪和计数(课程设计)
- zabbix mysql路径_ZABBIX数据库迁移目录
- 3、Power Map—入门之楼盘分布图
- 《那些年啊,那些事——一个程序员的奋斗史》——60
- ArcGIS Desktop 10.5 安装教程(win10环境下)
- windows平台oracle无法调度,windows 2003+Legato networker+oracle 9i (框架)
- apache cxf_Wildfly,Apache CXF和@SchemaValidation
- LeetCode 858. 镜面反射(最小公倍数/最大公约数)
- Java ObjectStreamClass lookup()方法与示例
- 如何让测试同学理解并发锁
- 26种对付反调试的方法
- Logback 深入分析
- 【VS2015】 C++实现硬件ID的查询
- JavaScript视频系统教程
- android9 三星 港版,三星S9官方港版安卓9固件系统升级更新包:TGY-G9600ZHU5CSFB
- 互联网金融爬虫怎么写-第一课 p2p网贷爬虫(XPath入门)
- 沿海当地平均海面与85面高程关系
- powershell 汉洛塔
- 3t硬盘分区 Linux win,3TB使用大难题 得先学会怎么分区_内存硬盘行情-中关村在线...
- 视频类网站的简单研究