【C++】成员函数重载二元和一元运算符

简介: 【C++】成员函数重载二元和一元运算符

重载双目运算符时,运算符函数中应该具有两个参数,若运算符函数作为类的成员函数(当运算符重载函数作为类的成员函数时,要求操作数左边必须是一个对象,而函数的参数可以是同类的对象也可以是普通的变量),则只需要一个参数。


双目运算符


双目运算符就是具有两个操作数的运算符。如 +、-、==等。


对双目运算符而言,成员函数重载运算符的函数参数表中只有一个参数,而用友元函数重载运算符函数参数表中含有两个参数。


成员函数重载 == 、>运算符:


 

bool operator==(CTime& time);
    bool operator>(CTime& time);//判断对象的每个成员变量是否相等
bool CTime::operator==(CTime& time)
{
    if (m_nHour == time.m_nHour&&m_nMinute == time.m_nMinute&&m_nSecond == time.m_nSecond)
    {
        return true;
    }
    return false;
}
bool CTime::operator>(CTime& time)
{
    if (m_nHour > time.m_nHour) //先判断两个对象的小时数的大小
    {
        return true;
    }
    else if (m_nHour < time.m_nHour)
    {
        return false;
    }
    else //这是两个对象小时数相等的情况,接下来就判断分钟数
    {
        if (m_nMinute> time.m_nMinute) //再判断两个对象的分钟数的大小
        {
            return true;
        }
        else if (m_nMinute < time.m_nMinute)
        {
            return false;
        }
        else //这是两个对象的时钟和分钟相等的情况下
        {
            if (m_nSecond>time.m_nSecond) //最后比较秒钟
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
    return false;  //最后就是两个对象相等,也不满足一个对象大于另外一个对象的情况,返回false
}

成员函数重载++运算符

    CTime operator++();//前置的++
    CTime operator++(int);//后置++,这个int类型的参数只是为了区分,我们并不会使用这个参数,所以我们不需要形参的名字//前置的++
CTime CTime::operator++() //重载++(前置)运算符
{
    CTime time(0,0,1); //定义了一个秒数为1的对象
    *this = *this + time;//由于前面的函数已经重载了加号运算符,里面已经定义好了相关的操作,所以这句代码调用了加号运算符的重载函数,并将对象的秒数加一
    return *this; //前置++的操作顺序就是先加再返回它的值
}
CTime CTime::operator++(int) //重载++(后置)运算符
{
    CTime time = *this;//后置++的操作规则是先返回再加,所以需要创建一个临时变量保存好这个对象的值
    CTime time2(0, 0, 1);//定义了一个秒数为1的对象
    *this = *this + time2;//同上调用了加法运算符的重载函数
    return *this;//返回加法操作之前的对象的值
}

GITHUB源码下载地址: 点我进行下载

目录
相关文章
|
2月前
|
C++
【C++基础】运算符详解
这篇文章详细解释了C++中运算符的用法,包括算术运算符、赋值运算符、比较运算符和逻辑运算符,以及它们在表达式中的作用和示例。
28 2
|
3月前
|
C++
c++学习笔记02 运算符
C++学习笔记,介绍了C++中的运算符,包括基本的加减乘除、求模、前后置递增递减、赋值运算符、比较运算符和逻辑运算符的使用及其注意事项。
40 6
|
5月前
|
C++
C++之运算符
C++之运算符
|
5月前
|
安全 程序员 C++
C++一分钟之-重载运算符
【6月更文挑战第21天】C++的运算符重载让程序员能为自定义类型定制运算符行为,增强代码表达力。但要注意清晰性、优先级和返回类型。遵循运算符原有意义,充分测试,并用注释解释非直观设计。示例展示了如何为复数类重载`+`运算符。避免重载内置类型,注意结合性,且慎用隐式转换。重载应提升可读性而非复杂化代码。
45 2
|
5月前
|
C++
C++一分钟之-理解C++的运算符与表达式
【6月更文挑战第18C++的运算符和表达式构成了编程的基础,涉及数学计算、逻辑判断、对象操作和内存管理。算术、关系、逻辑、位、赋值运算符各有用途,如`+`、`-`做加减,`==`、`!=`做比较。理解运算符优先级和结合律至关重要。常见错误包括优先级混淆、整数除法截断、逻辑运算符误用和位运算误解。解决策略包括明确优先级、确保浮点数除法、正确使用逻辑运算符和谨慎进行位运算。通过实例代码学习,如 `(a &gt; b) ? &quot;greater&quot; : &quot;not greater&quot;`,能够帮助更好地理解和应用这些概念。掌握这些基础知识是编写高效、清晰C++代码的关键。
37 3
|
6月前
|
C++
c++运算符
c++运算符
53 2
|
6月前
|
程序员 编译器 C++
c++重载运算符和重载函数
c++重载运算符和重载函数
36 1
|
6月前
|
存储 安全 程序员
C++中的四种类型转换运算符
reinterpret_cast` 则是非常危险的类型转换,仅用于二进制级别的解释,不检查安全性。`dynamic_cast` 用于类的继承层次间转换,向上转型总是安全的,向下转型时会借助 RTTI 进行安全性检查。只有当转换路径在继承链内时,转换才会成功。
|
5月前
|
编译器 C++
C++运算符的重载
C++运算符的重载
29 0