解释:
双目运算符:双目运算符有两个操作数(参加运算的数据),通常在运算符的左右两侧。例如: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函数是按字典序来进行比较,是逐个逐个字符来进行比较的。(大小写不相等)
若是两个字符相等进行下一个比较,不相等返回差值。(返回差值为整型)