21xrx.com
2024-12-22 20:22:32 Sunday
登录
文章检索 我的文章 写文章
C++中的运算符重载
2023-07-09 00:33:39 深夜i     --     --
C++ 运算符重载 可重载运算符 友元函数 成员函数

C++是一种支持操作符重载的编程语言,运算符重载是一种特殊的函数,它允许在用户自定义类型上实现其自己的操作符行为。操作符重载对于创建自定义类型非常有用,因为它可以让程序员为这些类型的对象提供更自然的操作方法。

在C++中,运算符重载通过在类中定义以下运算符函数来实现:


operator+  // 加法运算符

operator-  // 减法运算符

operator*  // 乘法运算符

operator/  // 除法运算符

operator%  // 取模运算符

operator<< // 左移运算符

operator>> // 右移运算符

operator== // 等于运算符

operator!= // 不等于运算符

operator<  // 小于运算符

operator>  // 大于运算符

operator<= // 小于等于运算符

operator>= // 大于等于运算符

operator[] // 下标运算符

operator() // 函数调用运算符

operator-> // 指向成员运算符

operator=  // 赋值运算符

其中,`operator+`是加号运算符的函数名称,其他名称依次类推。在运算符重载函数中,可以自定义对象类型的各个属性的相加、相减、相乘、相除等操作,并返回其结果。比如:


class Vector

{

public:

  int x, y;

  Vector operator+(Vector v)

  {

    Vector result;

    result.x = x + v.x;

    result.y = y + v.y;

    return result;

  }

};

在上述代码中,我们定义了一个`Vector`类,重载了加号运算符,实现了两个`Vector`对象的相加操作。其中,`operator+`是运算符重载函数,接受一个`Vector`对象作为参数,返回一个新的`Vector`对象,该对象包含了两个向量的加和。

需要注意的是,运算符重载函数必须返回对应的类型,并且一般都是定义在类中的公共成员函数。使用时,也必须在调用时使用成员运算符"."或"->"调用,如下:


Vector a, b, c;

a.x = 3;

a.y = 4;

b.x = 1;

b.y = 2;

c = a + b;

cout << "c.x = " << c.x << ", c.y = " << c.y << endl;

以上代码演示了如何使用运算符重载函数`operator+`来将两个向量`a`和`b`相加,并将结果保存在向量`c`中。

总之,C++的运算符重载是一种强大的特性,它可以使自定义类型的代码更加自然、更易于编写和理解。但是,在使用运算符重载时,应该遵循一些基本的原则,比如不改变运算符原有的语义、不破坏代码的可读性和可维护性等。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复