CPP-基础:单目运算符重载
关于++运算符前置和后置重载的实现实例:
#include <iostream>
using namespace std;
//创建时钟类
class Clock
{
public:
Clock(int NewH=,int NewM=,int NewS=);//构造函数
void ShowTime();//显示时间函数声明
Clock& operator ++();//前置运算符重载
Clock operator ++(int);//后置运算符重载
//关于前置运算符的后置运算符的重载说明:如果后面的括号里带有形参则为后置单目运算符重载,或无形参则为前置单目运算符重载
private:
int Hour,Minute,Second;
};
//构造函数实现
Clock::Clock(int NewH,int NewM,int NewS)
{
if(<=NewH && NewH< && <=NewM&&NewM<&&<=NewS && NewS<)
{
Hour = NewH;
Minute=NewM;
Second=NewS;
}
else
cout<<"Time error!"<<endl;
}
//显示时间函数实现
void Clock::ShowTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}
//前置单目运算符重载实现
Clock& Clock::operator ++()//前置单目运算符重载函数
{
Second++;
if(Second>=)
{
Second = Second-;
Minute++;
if(Minute>=)
{
Minute = Minute - ;
Hour++;
Hour=Hour%;
}
}
return *this;
}
//后置单目运算符重载实现
Clock Clock::operator ++(int)//后置单目运算符重载
{
Clock old = *this;
++(*this);
return old; //返回自加前的对象。
} void main()
{
Clock myClock(,,);
cout<<"First time output:";
myClock.ShowTime();
62
cout<<"Show myClock++:";
(myClock++).ShowTime();
65
cout<<"Show ++myClock:";
(++myClock).ShowTime();
}
在程序中对运算符“++”进行了重载,使它能用于Clock类对象。“++”和“--”运算符有两种使用方式,前置自增运算符和后置自增运算符。它们的作用是不一样的,在重载时怎样区别这二者呢?针对“++”和“--”这一特点,C++约定:
在自增(自减)运算符重载函数中,增加一个int型形参,就是后置自增(自减)运算符函数。
请注意前置自增运算符“++”和后置自增运算符“++”二者作用的区别。前置重载是先自加,返回的是修改后的对象本身。后者返回的是自加前的对象,然后对象自加。重载后置自增运算符时,多了一个int型的参数,增加这个参数只是为了与前置自增运算符重载函数有所区别,此外没有任何作用。编译系统在遇到重载后置自增运算符时,会自动调用此函数。
CPP-基础:单目运算符重载的更多相关文章
- C++_基础_运算符重载
内容: (1)输入输出运算符重载 (2)友元类和友元函数 (3)双目运算符重载 (4)单目运算符重载 (5)不能被重载的运算符 (6)只能定义为成员形式的运算符 1.输入输出运算符重载如: int n ...
- C++之运算符重载(1)
在前一节中曾提到过,C++中运行时的多态性主要是通过虚函数来实现的,而编译时的多态性是由函数重载和运算符重载来实现的.这一系列我将主要讲解C++中有关运算符重载方面的内容.在每一个系列讲解之前,都会有 ...
- [转]C++之运算符重载(1)
在前一节中曾提到过,C++中运行时的多态性主要是通过虚函数来实现的,而编译时的多态性是由函数重载和运算符重载来实现的.这一系列我将主要讲解C++中有关运算符重载方面的内容.在每一个系列讲解之前,都会有 ...
- C++:运算符重载函数之成员运算符重载函数
5.2.3 成员运算符重载函数 在C++中可以把运算符重载函数定义为某个类的成员函数,称之为成员运算符重载函数. 1. 定义成员运算符重载函数的语法形式 (1)在类的内部,定义成员运算符重载函数的格式 ...
- C++:运算符重载函数之友元运算符重载
5.2.2 友元运算符重载函数 运算符重载函数一般采用两种形式定义: 一是定义为它将要操作的类的成员函数(简称运算符重载函数): 二是定义为类的友元函数(简称为友元运算符重载函数). 1.定义友元运算 ...
- C++之运算符重载(2)
上一节主要讲解了C++里运算符重载函数,在看了单目运算符(++)重载的示例后,也许有些朋友会问这样的问题.++自增运算符在C或C++中既可以放在操作数之前,也可以放在操作数之后,但是前置和后置的作用又 ...
- C/C++对bool operator < (const p &a)const的认识,运算符重载详解(杂谈)
下面来进行这段代码的分析: struct node { //定义一个结构体node(节点) int x; int y; int len; //node中有3个成员变量x,y,l ...
- C++关于运算符重载知识点
1) 除了类属关系运算符".".成员指针运算符".*".作用域运算符"::".sizeof运算符和三目运算符"?:"以外 ...
- c++运算符重载---20
原创博文,转载请标明出处--周学伟 http://www.cnblogs.com/zxouxuewei/ c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程 ...
随机推荐
- ASP.NET Response.Cookies
//设置cookie Response.Cookies["loginPage"].Value = "login.aspx"; //命名并给值 Response. ...
- 数据可视化-svg入门基础(二)
接上一篇:数据可视化-svg入门基础(一),基础一主要是介绍了svg概念,元素样式设置等. svg是(scalable vector graphic)伸缩矢量图像. 一.目录 (1)图形元素 (2)文 ...
- 1118 Birds in Forest (25 分)
Some scientists took pictures of thousands of birds in a forest. Assume that all the birds appear in ...
- Unity2d 骨骼动画1:介绍
http://bbs.9ria.com/thread-401613-1-1.html by Orlando Pereira and PedroPereira3 days ago2 Comments 在 ...
- 类的property特性
目录 什么是 property特性 简单示例 property属性的两种方式 装饰器 类属性方式 property+类的封装 应用 私有属性添加getter和setter方法 使用property升级 ...
- 最长XX序列问题小结 By cellur925
今天我们搞一搞几个经典序列问题之间的爱♂恨♂情♂仇. 首先我们看一看LIS(最长上升子序列)(From my onenote)
- dumpe2fs: Bad magic number in super-block
今天使用tune2fs和dumpe2fs来查看文件系统信息,出现如下图所示错误提示: 解决方法: 1.原来tune2fs和dumpe2fs只能打开ext3/ext4等文件类型. dumpe2fs - ...
- 集成Activiti工作流的J2EE快速开发框架
框架简介 enos款快速开发模块化脚手架,实现功能有系统模块:菜单管理.用户管理.角色管理,系统监控:系统日志.接口api.sql监控. 系统功能 系统管理:菜单管理.用户管理.角色管理 统一查询 p ...
- 统计最长回文串(传说中的Manacher算法)Hihocoder 1032
算法的核心就在这一句上了:p[i] = min(p[2*id-i], p[id] + id - i); #include <iostream> #include <cstdio> ...
- Jasper_crosstab_Parameter_Crosstab Header
corsstab: Q : how to show filed value at crosstab Header Part? A : via pass parameter in crosstab. i ...