C++(运算符重载,运算符重载的两种方式详解)

本文介绍了C++中的运算符重载,包括基础知识、重载为成员函数和友元函数的两种方式。重点讨论了为什么“<<”、“>>”和类型转换运算符需要作为友元函数重载,并给出了关系运算符、下标运算符、函数调用运算符的重载示例。同时阐述了类型转换构造函数在类之间的转换作用,以及显式和隐式类型转换的区别。
摘要由CSDN通过智能技术生成

运算符重载基础知识

固定用法:

类内声明:

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) {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值