之前一直搞不懂operator 与&operator的区别。

简单来说就是operator 返回的是这个值,而&operator返回的是这个的地址。

主要的区别于用处就在于这个运算符的连用性,如果需要连用的话必须使用引用。

看了下别人的理解了下:

如果写成这样
ostream operator << (ostream& os, Point& pt) 
则:
Point a, b;
cout<<a<<b;
错误,只能写为:
cout<<a;
cout<<b;
原因在于
cout<<a<<b;
相当于:
(cout<<a)<<b;
第一个()中返回cout的临时变量,它不可以作为左值(因为operator << (ostream& os, Point& pt)的第一个参数是ostream&,而不是ostream),因而错误。

如果写成:
ostream& operator << (ostream& os, Point& pt) 
则:
cout<<a<<b;
正确,因为它等同于
(cout<<a)<<b;
(cout<<a)返回cout的引用,即就是它自己,它可以再次作为左值,因而能够连着写这个输出流 。

简而言之就是&operator可以将这个运算符连用。

测试程序:

#include <iostream>
using namespace std;
//定义点类
class Point
{
public:
int x,y;
Point(){}
Point(int xx,int yy){x=xx;y=yy;}
void print(){ cout<<"("<<x<<","<<y<<")\n"; }
friend Point &operator+(Point &a,Point &b);
//friend Point operator+(Point &a,Point &b);
};//重载+号操作(返回值)
/*Point operator+( Point &a,Point &b)
{
Point s(a.x+b.x,a.y+b.y);
return s;
}*///重载+号操作(返回址)
Point &operator+( Point &a,Point &b)
{
a.x+=b.x;
a.y+=b.y;
return a;
}//主函数
int  main()
{
Point a(3,2),b(1,5),c(1,6),e;
e=c+a+b;  //如果没有取地址的话不能进行连加操作
e.print();
}

operator 与operator相关推荐

  1. C++编程进阶3(如何写出正确的operator=、operator运算符的返回值以及是否应该是成员函数的讨论)

    八.如何写出一个安全的operator= 首先,operator=的返回值通常是一个类的引用,这一点需要和C++标准库的容器类的operator=保持一致 其次,如果一个类中含有指针成员,那么要防止自 ...

  2. 课时 24:Kubernetes API 编程利器:Operator 和 Operator Framework(夙兴)

    本节课程主要分享以下三方面的内容: operator 概述 operator framework 实战 工作流程 operator 概述 基本概念 首先介绍一下本节所涉及到的基本概念. CRD (Cu ...

  3. C++ new/new operator、operator new、placement new初识

    简要释义 1.operator new是内存分配函数(同malloc),C++在全局作用域(global scope)内提供了3份默认的operator new实现,并且用户可以重载operator ...

  4. operator.ne_Python operator.ne()函数与示例

    operator.ne operator.ne()函数 (operator.ne() Function) operator.ne() function is a library function of ...

  5. python operator __gt___Python operator.gt方法代码示例

    本文整理汇总了Python中operator.gt方法的典型用法代码示例.如果您正苦于以下问题:Python operator.gt方法的具体用法?Python operator.gt怎么用?Pyth ...

  6. operator和operator

    // operator和&operator !#include <iostream> using namespace std; //声明 class Point; Point op ...

  7. 从零开始入门 K8s | Kubernetes API 编程利器:Operator 和 Operator Framework

    作者  |  夙兴  阿里巴巴高级工程师 本文整理自<CNCF x Alibaba 云原生技术公开课>第 24 讲,点击"阅读原文"直达课程页面. 关注"阿里 ...

  8. C++ 中 new 操作符内幕:new operator、operator new、placement new

    一.new 操作符(new operator) 人们有时好像喜欢有意使C++语言的术语难以理解.比方说new操作符(new operator)和operator new的差别. 当你写这种代码: st ...

  9. operator=、operator[]、operator()操作符重载

    重载赋值运算符= 赋值运算符重载用于对象数据的复制 operator= 必须重载为成员函数 重载函数原型为:类型  &  类名  :: operator= ( const  类名 & ...

最新文章

  1. 大数据的两面性_大数据,多大的数据才是大数据?
  2. mysql查看使用的索引_Mysql查看是否使用到索引
  3. RabbitMQ Topic exchange
  4. python3断言_Python3断言
  5. BeagleBone Black QNX6.6 BSP中IPL的完善
  6. 简单程序跟踪调试方式
  7. blob的真实地址怎么获得_《和平精英》不夜海上花套装怎么获得 不夜海上花免费领取地址_和平精英...
  8. 头文件定义全局变量_5.2 C++局部变量与全局变量 | 输出局部全局变量
  9. 日月神话_常见的Java神话
  10. 【转】9、XAML名称空间详解
  11. “头号大厂铁粉”微软宣布关闭区块链服务
  12. 1、ClassLoader.getResourceAsStream() 与Class.getResourceAsStream()的区别
  13. Presto为什么快
  14. SpringBoot常用注解之@Retryable
  15. 【Web】关于Session过期/失效的理解
  16. JVisualVM 简介
  17. 对于三极管饱和状态的理解
  18. 深度解析脑机接口技术的现状与未来!
  19. 如何使用报表工具制作统计报表
  20. docker和k8s的常见命令

热门文章

  1. 《程序设计基础》 第四章 循环结构 7-13 找零钱 (20 分)
  2. Henry前端笔记之 something about devtool
  3. Ray --内部运行机制、对象存储中对象的存储和容错
  4. 人生的最好状态,是从“满足别人”走向“活出自己”
  5. 电子表整点报时怎么取消_聚划算双十一开团是什么意思?双十一聚划算开团怎么抢?...
  6. linux实验三:基于mykernel 2.0编写一个简单的操作系统内核
  7. 倾听用户呼吁 Skype决定开源
  8. 淘宝网上的搞笑差评集锦
  9. Netty学习(一):初识Netty
  10. IDEA连接MySQL数据库[42000][1049] Unknown database ‘logistics‘.