operator 与operator
之前一直搞不懂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相关推荐
- C++编程进阶3(如何写出正确的operator=、operator运算符的返回值以及是否应该是成员函数的讨论)
八.如何写出一个安全的operator= 首先,operator=的返回值通常是一个类的引用,这一点需要和C++标准库的容器类的operator=保持一致 其次,如果一个类中含有指针成员,那么要防止自 ...
- 课时 24:Kubernetes API 编程利器:Operator 和 Operator Framework(夙兴)
本节课程主要分享以下三方面的内容: operator 概述 operator framework 实战 工作流程 operator 概述 基本概念 首先介绍一下本节所涉及到的基本概念. CRD (Cu ...
- C++ new/new operator、operator new、placement new初识
简要释义 1.operator new是内存分配函数(同malloc),C++在全局作用域(global scope)内提供了3份默认的operator new实现,并且用户可以重载operator ...
- operator.ne_Python operator.ne()函数与示例
operator.ne operator.ne()函数 (operator.ne() Function) operator.ne() function is a library function of ...
- python operator __gt___Python operator.gt方法代码示例
本文整理汇总了Python中operator.gt方法的典型用法代码示例.如果您正苦于以下问题:Python operator.gt方法的具体用法?Python operator.gt怎么用?Pyth ...
- operator和operator
// operator和&operator !#include <iostream> using namespace std; //声明 class Point; Point op ...
- 从零开始入门 K8s | Kubernetes API 编程利器:Operator 和 Operator Framework
作者 | 夙兴 阿里巴巴高级工程师 本文整理自<CNCF x Alibaba 云原生技术公开课>第 24 讲,点击"阅读原文"直达课程页面. 关注"阿里 ...
- C++ 中 new 操作符内幕:new operator、operator new、placement new
一.new 操作符(new operator) 人们有时好像喜欢有意使C++语言的术语难以理解.比方说new操作符(new operator)和operator new的差别. 当你写这种代码: st ...
- operator=、operator[]、operator()操作符重载
重载赋值运算符= 赋值运算符重载用于对象数据的复制 operator= 必须重载为成员函数 重载函数原型为:类型 & 类名 :: operator= ( const 类名 & ...
最新文章
- 大数据的两面性_大数据,多大的数据才是大数据?
- mysql查看使用的索引_Mysql查看是否使用到索引
- RabbitMQ Topic exchange
- python3断言_Python3断言
- BeagleBone Black QNX6.6 BSP中IPL的完善
- 简单程序跟踪调试方式
- blob的真实地址怎么获得_《和平精英》不夜海上花套装怎么获得 不夜海上花免费领取地址_和平精英...
- 头文件定义全局变量_5.2 C++局部变量与全局变量 | 输出局部全局变量
- 日月神话_常见的Java神话
- 【转】9、XAML名称空间详解
- “头号大厂铁粉”微软宣布关闭区块链服务
- 1、ClassLoader.getResourceAsStream() 与Class.getResourceAsStream()的区别
- Presto为什么快
- SpringBoot常用注解之@Retryable
- 【Web】关于Session过期/失效的理解
- JVisualVM 简介
- 对于三极管饱和状态的理解
- 深度解析脑机接口技术的现状与未来!
- 如何使用报表工具制作统计报表
- docker和k8s的常见命令
热门文章
- 《程序设计基础》 第四章 循环结构 7-13 找零钱 (20 分)
- Henry前端笔记之 something about devtool
- Ray --内部运行机制、对象存储中对象的存储和容错
- 人生的最好状态,是从“满足别人”走向“活出自己”
- 电子表整点报时怎么取消_聚划算双十一开团是什么意思?双十一聚划算开团怎么抢?...
- linux实验三:基于mykernel 2.0编写一个简单的操作系统内核
- 倾听用户呼吁 Skype决定开源
- 淘宝网上的搞笑差评集锦
- Netty学习(一):初识Netty
- IDEA连接MySQL数据库[42000][1049] Unknown database ‘logistics‘.