首页 > 其他分享 >运算符重载

运算符重载

时间:2023-08-01 17:58:07浏览次数:38  
标签:++ 运算符 operator HH num 重载

运算符重载:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型

1.加号运算符重载

 2.左移运算符重载

一般输出时 cout<<p.m_A<<" "<<p.m_B<<endl; 但是现在想用<<直接输出p,(直接输出类类型的p, cout<<p<<endl; )该怎么办呢?

利用成员函数重载  左移运算符       p.operator<<(cout)  简化版本: p<<cout ;

不会利用成员函数重载<<运算符,因为无法实现cout在左侧;so用全局函数。

cout是在ostream类下的一个对象,且只有唯一一个,所以要加&;

 没完呢 !!!此时还不能再追加一个东西如 cout<<p<<endl; 因为cout<<p;之后返回的不是cout,那怎么让cout调用<<完还是cout呢?(链式编程思想)

接下来:

  3.递增运算符重载

 

 1 #include<iostream>
 2 using namespace std;
 3 //前置递增返回引用,后置递增返回值 
 4 class HH
 5 {
 6 public:
 7     int m_num;
 8     HH()
 9     {
10         m_num=0;
11     }
12     //前置++
13     HH& operator++()
14     {
15         //先++
16         m_num+=4;
17         //再返回
18         return *this; 
19     }
20     //后置++
21     HH operator++(int)//int是占位参数,防止与前面的一样
22     {
23         //先记录当前值
24         HH temp=*this;//错误样例:HH temp=m_B; 
25         //再++
26         m_num+=3; 
27         //最后返回记录值
28         return temp; 
29      } 
30 };
31 
32 //左移运算符重载
33 ostream& operator<<(ostream& cout,HH myint)
34 {
35     cout<<myint.m_num;
36     return cout;
37  } 
38 void test01()
39 {
40     HH p;
41     cout<<++p<<endl;
42     cout<<p++<<endl;
43 }
44 int main()
45 {
46     test01();
47  } 

 

标签:++,运算符,operator,HH,num,重载
From: https://www.cnblogs.com/hello-205112/p/17596922.html

相关文章

  • ...扩展运算符
     目录前言导语 代码部分 运行结果前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语歌谣歌谣......
  • C#的重载决策
    重载是许多编程语言支持的特性。所谓重载,就是指可以定义多个名称相同但参数(个数、类型和顺序)不同的方法(函数)。先来看一个例子:voidMain(){charcvalue='a';malem=newmale();m.write(cvalue);}classhuman{publicvoidwrite(charvalue){......
  • C++ | 运算符重载
    运算符重载在类中的函数进行重载(成员函数)运算符重载用于重新定义运算符的作用,使用函数名称operatorOP作为函数名,其中OP为具体的运算符(如operator+)classTime{Timeoperator+(constTime&t);};Timea,b;Timec=a+b;在成员函数中重载的运算符,如+-等,默认左边......
  • UVM:3.4.2 重载打印信息的严重性
    1.所有warning替换成error:2.只对某个特定id起作用:3.重载严重性是没有递归函数的。4.可以在命令行中实现:<simcommand>+uvm_set_severity=<comp>,<id>,<currentseverity>,<new_severity><simcommand>+uvm_set_severity="uvm_test_top.env.i_agt.drv,my_driver,......
  • 可选链运算符(?.)的使用
    作用:读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。运算符的功能类似于 . 链式运算符,不同之处在于,在引用为空 (nill 或者 undefined)的情况下不会引起错误,该表达式短路返回值是 undefined。与函数调用一起使用时,如果给定的函数不存在,则返回 un......
  • java中取余运算符
    Java中取余运算符在Java中,取余运算符(%)用于计算两个数相除之后的余数。它可以用于整数和浮点数类型的操作数,并且取余运算符的使用和结果与数学中的模运算相同。本文将详细介绍Java中取余运算符的用法,并给出一些示例代码来帮助理解。取余运算符的使用取余运算符用于计算两个数相除......
  • 21-Hive运算符&函数
    1.Hive内置运算符整体上,Hive支持的运算符可以分为三大类:关系运算、算术运算、逻辑运算。官方参考文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF也可以使用下述方式查看运算符的使用方式:--显示所有的函数和运算符showfunctions;--查看运算......
  • C++运算符重载
    1.概念赋予运算符更多的功能。2.内容赋值运算符+-*/%运算符自增自减运算符输出流运算符的重载<<输入流运算符的重载>>函数调用运算符()下标运算符[]成员访问运算符->,*3.赋值运算符这个一般是用已存在的对象赋值给另一个已存在的对象。//如存在Comp......
  • Java学习-2.简介、关键字、标识符、变量、数据类型、运算符
    一、Java简介Java最早是由SUN公司(已被Oracle收购)的詹姆斯·高斯林(高司令,人称Java之父)在上个世纪90年代初开发的一种编程语言,最初被命名为Oak,目标是针对小型家电设备的嵌入式应用,结果市场没啥反响。谁料到互联网的崛起,让Oak重新焕发了生机,于是SUN公司改造了Oak,在1995年以Java的名......
  • Python-3-Python变量与运算符
    第三章:变量与运算符3-1变量的介绍1.变量只能包含字母、数字、下划线。变量名可以以字母或下划线开头,但绝不是数字开头。2.不能将python关键字作为变量名,常见python关键字有:FalseclassfinallyisreturnTruecontinueforlambdat......