单目运算符重载_单目运算符->重载_演绎一场属于你我的戏的博客-程序员秘密

技术标签: 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

智能推荐

总结:JDK1.5-JDK1.8各个新特性_truepredicate替代_道法自然↑的博客-程序员秘密

JDK各个版本的新特性  要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言。以下介绍一下JDK1.5版本到JDK1.7版本的特性及JDK1.8部分特性。JDK1.5新特性 1:自动装箱与拆箱:自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中。自动拆箱的过程:每当需要一个值时,被装箱对象中的值...

荣耀十连续点击android版本9,华为荣耀V10开发者选项如何设置_洛克t的博客-程序员秘密

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。系统版本为EMUI10,华为荣耀V10开发者选项的设置步骤是:1、首先进入荣耀v10手机桌面,点击设置。2、点击关于手机。3、连续点击版本号7次,输入锁屏密码,点击返回。4、点击进入开发人员选项即可设置。华为荣耀V10,是荣耀旗下一款智能手机。于2017年11月28日在北京发布。华为荣耀V10配备一块LCD材质18:9的全面屏,分...

struts2进阶二---OGNL表达式与OGNL表达式在struts2中的运用_咔咔客的博客-程序员秘密

OGNL(对象视图导航语言)表达式(EL表达式就是)OGNL不仅仅可以视图导航还支持比EL表达式更加丰富的功能使用:准备工作1:导包(struts包里面已经有了)准备工作2:ognl基本语法:1:取值取出root中的属性值取出context中的属性值#:代表从context中取2:赋值给root中属性赋值给context中...

MPC中常用到的非线性模型_非线性mpc_东巴图的博客-程序员秘密

考虑到理论模型太复杂或难以获得解析表达式,一些非理论模型可以高精度逼近真实系统,已经应用于非线性系统的MPC,如Volterra,NARMAX模型,维纳模型,Hammerstein模型等。本文选取几种做简单介绍:Volterra模型 Volterra模型属于非理论性模型的一种,可以较为精确的描述非线性系统的动态特性。对于单数入单输出的离散非线性系统,二阶Volterra模型的一般形式可表述...

Windows的磁盘操作之三——获取和删除磁盘分区信息_隔窗知夜雨的博客-程序员秘密

下文转载自http://blog.51cto.com/cutebunny/624079上一节中介绍了如何初始化一块空白的磁盘,并创建分区。那么对于一块已存在分区的磁盘,我们如何获得其分区信息,如何删除其分区信息呢?本节对这两类操作进行讨论。 获得磁盘分区信息的代码如下。/******************************************

一个毕业6年的程序员工作经历和成长感悟(上)_hailonggong的博客-程序员秘密

一个毕业6年的程序员工作经历和成长感悟(上) 把时钟拨回到2007年的夏天,大学毕业。那时非常迷茫,不知道自己能做什么,想做什么,对工作有一种期待和憧憬,只是觉得计算机、网络有关的职位都可以投递简历。2007年5月12日(历史惊人的巧合,没想到6年后的今天写下了这篇回忆文章),南下广州,开始找工作。或许,因为运气好、加上笔试不错、人也比较老实,第一份工作敲定了,任职于一家教育培

随便推点

django 快速实现session的操作_judyge的博客-程序员秘密

说明:  从这一篇开始就不再完整的介绍django项目的创建过程了,因为前面几篇博客中都详细的介绍了这个创建过程,套路都是一样的,熟悉了这个套路,后面要做的是一些细节技术点的学习和练习。   上一节讲到了django中如何使用cookie来记录用户登录信息,这一节来了解session是如何来记录用户登录信息的。 创建项目,创建应用,设置settings.py

Spring中的AOP(一)——AOP基本概念和Spring对AOP的支持_springaop_技术新人牛的博客-程序员秘密

AOP的基本概念    AOP从运行的角度考虑程序的流程,提取业务处理过程的切面。AOP面向的是程序运行中的各个步骤,希望以更好的方式来组合业务逻辑的各个步骤。AOP框架并不与特定的代码耦合,AOP框架能处理程序执行中特定切入点,而不与具体某个类耦合(即在不污染某个类的情况下,处理这个类相关的切点)。下面是一些AOP的一些术语:    切面(Aspect):业务流程运行的某个特定步

计算机网络应用层1练习题答案_£•€•×的博客-程序员秘密

6.4.1 单项选择题答案6.4.3 填空题答案1.应用层2.层次树状、域名3.权限域名、IP地址4.递归查询、迭代查询5.名字以及从何处获得名字映射6.客户服务器、多7.控制连接、数据连接8.处理、结果9.超媒体10.层次、中国、商业、教育11.SMTP12.客户机/服务器13.SMTP 、POP314.邮件服务器、协议。15.协议类型、主机名16.远程登录...

Android 平台电容式触摸屏的驱动基本原理_电容屏驱动模块是干嘛的_Younix脏羊的博客-程序员秘密

硬件工作原理驱动基本原理 中断(工作队列) input子系统 电容式触摸屏的驱动基本原理

03.使用styled-components完成Header布局(2)_zhuhui2000的博客-程序员秘密

在index.js的jsx部分加入标签,然后在其头部引用,最后去styled.js中写相关的样式:index.js完整代码:import React, { Component } from 'react';import { HeadrerWrapper, Logo, Nav, NavItem, NavSearch, Addition, ...

ImportError: Could not find the DLL(s) 'msvcp140_1.dll'._qq_37591637的博客-程序员秘密

报错信息ImportError: Could not find the DLL(s) 'msvcp140_1.dll'. TensorFlow requires that these DLLs be installed in a directory that is named in your %PATH% environment variable. You may install these ...

推荐文章

热门文章

相关标签