重载双目运算符与重载单目运算符

解释:

双目运算符:双目运算符有两个操作数(参加运算的数据),通常在运算符的左右两侧。例如:a+b,a>b等。

单目运算符:单目运算符只有一个操作数(参与运算的数据),如!a,-b,&c,*p,--i等。

目录

一、双目运算符:

二、单目运算符

三、补充部分


一、双目运算符:

下面用例子来进一步进行解释双目运算符怎么在代码中体现:

例:比较两个字符串的大小:

1、初始代码

#include<iostream>
using namespace std;
class String 
{
    public:
        String(){p=NULL}
        String(){char*str);//定义默认构造函数
        void display();//声明构造函数
    privated:
        char*p;//字符型指针,用于指向字符串
};
String::String(char*str)//定义构造函数
{
    p=str;//使p指向实参字符串
}
viod String::display()
{
    cout<<p;//输出p所指向的字符串
}
int main()
{
    String String1("Hellow"),string2("Book");//定义对象
    String1.display();
    cout<<endl;
    String2.display();
    return 0;
}

2、在初始代码上进行改造

class String 
{
    public:
        String(){p=NULL}
        String(){char*str);//定义默认构造函数
        friend bool operator>(String &string1,String &string2);//声明运算符函数为友元函数
        void display();//声明构造函数
    privated:
        char*p;//字符型指针,用于指向字符串
};
bool operator>(String &string1,String %stirng2)//定义运算符重载函数
{
    if(strcmp(string1.p,string2.p)>0)//这里strcmp函数忘记了的看本篇文章后面的补充部分
        return true;
    else return false;
}
//下面int main函数输出判断结果真为1,假为0
int mian()
{
    String string1("Hello"),string2("Book");
    cout<<(string1>string2)<<endl;
}

二、单目运算符

同样单目运算符也用一个例子来解释怎么使用

例:有一个Time类,包含数据成员minute和sec,模拟秒表,每次走一秒,满60秒进一分钟,此时秒又从0运算。要求输出分钟和秒的值。

#include<iostream>
using namespace std;
class Time
{
    public:
        Time(){minute=0;sec=0;}//默认构造函数
        Time(int m,int s):minute(m),sec(s){}/构造函数重载
        Time operator++();
        void display(){cout<<minute<<":"<<sec<<endl;
    private:
        int minute;
        int sec;
};
Time Time::operator++()
{
    if(++sec>=60)
        {sec-=60;
        ++minute;}
    return *this;//返回当前对象值
}
int main()
{
    Time time1(34,0);
    for(int i=0;i<61;i++)
        {
            ++time1;
            time1.display();
        }
            return 0;
}

三、补充部分

strcmp函数:

1、所需要头文件:

#include <string.h>

2、用法:

#include<iostream>
using namespace std;
#include<string.h>
int main()
{
		int x;
		char str1[] = "hellow";
		char str2[] = "book";
		x = strcmp(str1, str2);
		if (x == 0)
			cout << "相等" << endl;
		else if (x > 0)
			cout << "a>b" << endl;
		else if(x < 0)
			cout << "a<b" << endl;
		return 0;
}

3、注意

strcmp函数是按字典序来进行比较,是逐个逐个字符来进行比较的。(大小写不相等

若是两个字符相等进行下一个比较,不相等返回差值。(返回差值为整型

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值