运算符重载基础知识
固定用法:
类内声明:
bool operator>=(const Student&) const;
初始化:
bool Student::operator>=(const Student& stu) const
{
//常成员函数,功能:比较两个对象的数据成员dScore大小
return this->dScore >= stu.dScore;
}
可以看到返回值是bool类型,即true或false,所以在后面的if语句中可以直接使用>=
if(s1 >= s2)
cout << s1.GetName() << " " << s1.GetScore() << endl;
else
cout << s2.GetName() << " " << s2.GetScore() << endl;
注意:
- 只能重载C++中已有的运算符,不能创建新的运算符
- 重载后不改变运算符优先级顺序(比如乘除和加减)
- 重载后不改变运算符的结合性
- 重载后不改变操作数的个数(比如-,可以a-b,也可以-a)
- 重载后不改变运算符原有的语义
- 重载时的操作对象至少有一个应该是类对象或其引用(否则没必要重载)
重载的两种方式
- 重载为类的成员函数
1、当运算符是双目运算符时
左操作数 运算符 右操作数;
编译时:
s1>=s2;//与下面式子等价
s1.operator>=(s2);
2、当运算符是单目运算符时
类内定义:
Time operator++(); //前置自增
Time operator++(int); //后置自增
返回的才是当前要使用的:
Time Time::operator++()//实现前置自增 ++a;
{
nSecond++;
if(nSecond == 60) {
nMinute++; nSecond = 0;}
if(nMinute == 60) {
本文介绍了C++中的运算符重载,包括基础知识、重载为成员函数和友元函数的两种方式。重点讨论了为什么“<<”、“>>”和类型转换运算符需要作为友元函数重载,并给出了关系运算符、下标运算符、函数调用运算符的重载示例。同时阐述了类型转换构造函数在类之间的转换作用,以及显式和隐式类型转换的区别。
最低0.47元/天 解锁文章
2247

被折叠的 条评论
为什么被折叠?



