系列文章目录
前言
本文中会介绍在类会经常使用的运算符重载
一、流运算符重载
-
cin类型 : istream类的对象
-
cout类型:ostream类的对象
-
流运算符 >> <<
-
必须采用友元函数形式重载
使用例子:
class PP
{
public:
friend istream& operator>>(istream& i, PP& u)//重载>>
{
i >> u.yyds;
return i;
}
friend ostream& operator<<(ostream& i, PP& u)//重载<<
{
i << u.yyds;
return i;
}
protected:
char yyds;
private:
};
int main()
{
PP A;
cin >> A;//调用重载>>
cout << A;//调用重载<<
cout << "sdasd";//当作用的对象不是所在类时不生效
return 0;
}
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、其余运算符
除了流运算符以外其余运算符的创建方式基本相同但参数的数量会有不同
注意像. .* ?: ::等运算符是无法重载的
1.单目运算符
单目运算符是没有参数的,因为它操作的是调用它类对象;
这里来介绍++运算符它是比较特殊的一个
例子:
class PP
{
public:
int operator++(int)//当参数为int重定义的为后置++;
{
return yyds++;
}
int operator++()//当无参数时为前置++;
{
return ++yyds;
}
protected:
int yyds;
private:
};
int main()
{
PP A;
A++;
cout << A++;
cout<<++A;
}
2.双目运算符
双目运算符拥有一个参数;
这里介绍+与-的重载;例子:
class PP
{
public:
int operator+(PP& i)
{
return (i.yyds + yyds);
}
int operator-(PP& i)
{
return (yyds - i.yyds);
}
void operator=(int i)
{
yyds = i;
}
protected:
int yyds=3;
private:
};
int main()
{
PP A;
PP B;
B = A + B;
cout << B<<endl;//输出6
A = A - B;
cout << A;//输出-3
三、文本重载
这种重载在日常运用中并不经常使用;
经常用来经行单位的转化;
例子:
unsigned long long operator"" min(unsigned long long num)
{
return num * 60;
}
int main()
{
int y = 10min+109;//y的单位为秒;
return 0;
}