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

运算符重载基础知识

固定用法:

类内声明:

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) {
   
  • 13
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++ 中的面向对象编程允许我们使用类和对象来组织和管理代码。在类中,可以定义成员函数和成员变量。成员函数是与类相关联的函数,它们可以访问类的成员变量并执行与该类相关的操作。成员变量是存储在类中的变量,它们描述了类的状态。 运算符重载C++ 中面向对象编程的一种强大功能。它允许您重新定义运算符以执行特定操作。例如,您可以重载“+”运算符以执行类对象的加法操作。运算符重载使您能够编写更直观和易于使用的代码。 友元函数是类的非成员函数,但它们可以访问类的私有成员。当您需要访问类的私有成员但不想使这些成员成为公共接口的一部分时,友元函数就会很有用。要声明一个友元函数,请在类定义中将其声明为友元。友元函数可以是全局函数或其他类的成员函数。 下面是一个示例类,其中包含运算符重载和友元函数: ```cpp #include <iostream> class MyClass { public: MyClass(int value) : value_(value) {} // 重载加号运算符,将两个 MyClass 对象相加 MyClass operator+(const MyClass& other) { return MyClass(value_ + other.value_); } // 将友元函数声明为 MyClass 的友元 friend void PrintValue(const MyClass& obj); private: int value_; }; // MyClass 的友元函数 void PrintValue(const MyClass& obj) { std::cout << "The value of MyClass is: " << obj.value_ << std::endl; } int main() { MyClass obj1(10); MyClass obj2(20); MyClass result = obj1 + obj2; PrintValue(result); return 0; } ``` 在这个例子中,我们定义了一个 MyClass 类,它包含一个成员变量 value_ 和一个构造函数。我们还重载了加号运算符,以便我们可以将 MyClass 对象相加。最后,我们定义了一个名为 PrintValue 的友元函数,该函数可以访问 MyClass 类的私有成员 value_。 在 main 函数中,我们创建了两个 MyClass 对象,将它们相加并将结果打印到控制台上。请注意,我们使用了友元函数 PrintValue 来打印 MyClass 对象的值,而不是直接访问 MyClass 对象的私有成员。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值