单目运算符重载_重载单目运算符,需要 0 个操作数-程序员宅基地

技术标签: C++学习  

单目运算符只有一个操作数,重载方法与双目运算符的重载类似。由于单目运算符只有一个操作数,因此运算符的重载函数只有一个参数,若重载函数为类成员函数,则可以省略此参数。

以自增运算符“++”为例,介绍单目运算符的重载。“++”运算符有两种使用方式,前置自增运算符和后置自增运算符,重载的时候又是怎样区分的呢?通过以下的例子来讲述。

例:

#include <iostream>
using namespace std;
class Time
{
public:
 Time(){minute=0;sec=0;}
 Time(int m,int s){minute=m;sec=s;}
 Time operator++();//前置自增运算符“++”重载
 Time operator++(int);//后置自增运算符“++”重载
 void display();
private:
 int minute;
 int sec;
};
void Time::display()
{
 cout<<minute<<":"<<sec<<endl;
}
Time Time::operator ++()   //定义前置自增运算符“++”重载
{
 sec++;
 if(sec>=60)
 {
  minute++;
  sec=sec-60; 
 }  
 return *this;     //返回的是自增后得对象
}
Time Time::operator ++(int)//定义后置自增运算符“++”重载
{
 Time temp(*this); //保存自增前的对象
 sec++;
 if(sec>=60)
 {
  minute++;
  sec=sec-60; 
 }
 return temp;      //返回的是自增前得对象
}
int main()
{
 Time t1(34,0),t2;
 for(int i=0;i<=60;i++)
 {
  ++t1;
  t1.display();
 }
 t2=t1++;
 t2.display();
 return 0;
}
我们可以从程序中看出,重载后置自增运算符时,多了一个int型的参数,增加这个参数只是为了与前置自增运算符重载函数有所区别,此外没有任何的作用,在定义此重载函数时,也不必要使用此参数,因此可以省略写参数名,只需在括号中写int即可。编译系统在遇到后置自增运算符时,会自动调用此函数。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012223598/article/details/38522147

智能推荐

Android P SystemUI下拉时,状态栏和通知栏显示位置不一致。_android 开机后首次状态栏下拉偏移-程序员宅基地

文章浏览阅读2.2k次。--- a/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java+++ b/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/sy..._android 开机后首次状态栏下拉偏移

error in opening zip file-程序员宅基地

文章浏览阅读1w次。错误情况项目用 maven 打好 war 包后放到 tomcat 下,启动 tomcat,出现以下错误3-Nov-2017 12:21:44.346 严重 [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start compone_error in opening zip file

向线程传递参数的两种基本方法-程序员宅基地

文章浏览阅读531次。在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果。但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据。本文就以上原因介绍了几种用于向线程传递数据的方法。 欲先取之,必先予之。一般在使用线程时..._线程传递参数的方式

Matlab save colormap_如何在matlab保存色标-程序员宅基地

文章浏览阅读546次。Matlab save colormapMatlab save colormap1、保存成eps格式;_如何在matlab保存色标

unity4.6之UGUI之与代码结合及Text讲解_unity两个ui的text相加的代码-程序员宅基地

文章浏览阅读2.4k次。UGUI与以往的NGUI不同之处很多其中一大特点就是UGUI 把精灵图集的功能取消了。首先是我们看看UGUI的UI界面:其中有项是Text...也就是 本节要讲的内容;说到text不得不说的是字体:下图中看字体的属性较之NGUI方便了很多的,line spacing 是行间距辣么字体木有了图集自然会有新东西了在project里直接右击会出现impor_unity两个ui的text相加的代码

【pwnable.kr】collision_pwnable.kr-02 collision-程序员宅基地

文章浏览阅读179次。ssh登录,源码如下:#include <stdio.h>#include <string.h>unsigned long hashcode = 0x21DD09EC;unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i<..._pwnable.kr-02 collision

随便推点

H.264的Slice及Slice类型_slice type-程序员宅基地

文章浏览阅读812次。原文地址:https://www.xuebuyuan.com/1722272.html一、基本概念一个视频图像可编码成一个或更多个条带,每个条带包含整数个宏块(MB),即每个条带至少一个MB,最多时每个条带包含整个图像的宏块。总之,一幅图像中每个条带的宏块数不一定固定。设条带的目的是为了限制误码的扩散和传输,应使编码条带相互间是独立的。某个条带的预测不能以其它条带中的宏块为参考图像,这样某一条带中的预测误差才不会传播到其它条带中去。Slice的类型如表1所示表1 Slice的类型说明_slice type

divx.exe_pcsvc.exe应用程序错误-程序员宅基地

文章浏览阅读363次。 进程知识库 divx - divx.exe - 进程信息进程文件: divx 或者 divx.exe进程名称: Divx 描述:divx.exe被确认为是MASTAK病毒。这个文件建议终止。 出品者: 未知N/A属于: MASTAK virus系统进程: 否后台程序: 是使用_pcsvc.exe应用程序错误

Mac 安装 OpenCV 及示例程序_mac 安装openvap指定版本-程序员宅基地

文章浏览阅读1.5k次,点赞2次,收藏2次。Mac 安装 OpenCV 及示例程序安装OpenCV安装 Xcode安装Homebrew安装Python安装OpenCV安装 Xcode直接在APP Store中下载安装即可sudo xcodebuild -licensesudo xcode-select --install安装Homebrew≈Mac上的apt-get参考 Mac API那篇文章,那里已经安装了安装完可以用..._mac 安装openvap指定版本

mac 下QT全面跨平台环境搭建_macos10.13 qt-unified-mac-x64-online-程序员宅基地

文章浏览阅读617次。macOS+linux+windows+ios+android(QtCreator)系统:macos开发工具:Qt creator开发语言:C++ python下载地址:https://www.qt.io/zh-cn/download选择开源版macOS+linux+windows+ios+android(QtCreator)系统:macos开发工具:Qt creator开发语言:C++ python下载地址:https://www.qt.io/zh-..._macos10.13 qt-unified-mac-x64-online

【React】为img标签的src请求添加自定义头部,添加token,实现前端带身份向后端请求图片_前端img src 访问需要认证如何解决-程序员宅基地

文章浏览阅读9.9k次,点赞4次,收藏18次。目录应用场景尝试解决一:尝试解决二:总结:应用场景问题:前端写入指定的img标签和src属性,请求不了后端图片。原因:401,UnauthorizedError,因为前端中的src属于普通的get请求,不带自定义header,而后端有对每个请求都进行身份验证,最终返回{ status: 1, msg: "TOKEN ERROR"}前端请求头中找不到Authorization: Bearer token....那请求的接口都有对axios进行拦截,但是img标签的src不经_前端img src 访问需要认证如何解决

linux(centos)+nginx/apache+mysql+php-fpm环境搭建_linux虚拟机配置apache+mysql+php-程序员宅基地

文章浏览阅读983次。linux+nginx/apache+mysql+php环境搭建参考链接:https://blog.csdn.net/wangliqiang1014/article/details/82906234一、安装centoshttp://mirrors.aliyun.com/centos/7/isos/x86_64/阿里云镜像网站上下载centos 7的iso镜像。https://mp.weixin.qq.com/s/1h8B20bu1y-xCpVbSdoabw在vmware中使用该教程安装cent_linux虚拟机配置apache+mysql+php