21xrx.com
2024-12-22 21:16:03 Sunday
登录
文章检索 我的文章 写文章
C++的运算符可重载,详解所有运算符重载方法
2023-07-05 02:14:52 深夜i     --     --
C++ 运算符 可重载 详解 方法

C++中的运算符是一些特殊的函数,它们用于在类内部执行运算操作。它们也是可以被重载的,这意味着你可以定义自己的运算符,并为它们编写自定义操作。在本文中,我们将详细介绍C++中所有运算符的重载方法。

1. 一元运算符

一元运算符是只有一个参数的运算符。这些运算符可以用于增加、减少或否定一个值。

- 前置递增运算符和前置递减运算符

前置递增运算符和前置递减运算符的重载方法如下:


class MyClass {

public:

  int operator++() // 前置递增

    // 实现操作

  

  int operator--() // 前置递减

    // 实现操作

  

};

- 后置递增运算符和后置递减运算符

后置递增运算符和后置递减运算符的重载方法与前置递增和前置递减运算符略有不同:


class MyClass {

public:

  int operator++(int) // 后置递增

    // 实现操作

  

  int operator--(int) // 后置递减

    // 实现操作

  

};

需要注意的是,这里的参数是 `int` 类型,而不是 `MyClass` 类型。

2. 二元运算符

二元运算符是需要两个参数的运算符。这些运算符可以用于加、减、乘、除等操作。

- 加法运算符

加法运算符的重载方法如下:


class MyClass {

public:

  int operator+(const MyClass& other) const // 加法运算符

    // 实现操作

  

};

- 减法运算符

减法运算符的重载方法如下:


class MyClass {

public:

  int operator-(const MyClass& other) const // 减法运算符

    // 实现操作

  

};

- 乘法运算符

乘法运算符的重载方法如下:


class MyClass {

public:

  int operator*(const MyClass& other) const // 乘法运算符

    // 实现操作

  

};

- 除法运算符

除法运算符的重载方法如下:


class MyClass {

public:

  int operator/(const MyClass& other) const // 除法运算符

    // 实现操作

  

};

- 取模运算符

取模运算符的重载方法如下:


class MyClass {

public:

  int operator%(const MyClass& other) const // 取模运算符

    // 实现操作

  

};

- 异或运算符

异或运算符的重载方法如下:


class MyClass {

public:

  int operator^(const MyClass& other) const // 异或运算符

    // 实现操作

  

};

- 比较运算符

比较运算符用于比较两个值的大小。C++中有六种比较运算符,分别是 `<`、`>`、`<=`、`>=`、`==` 和 `!=`。它们的重载方法如下:


class MyClass {

public:

  bool operator<(const MyClass& other) const // <

    // 实现操作

  

  bool operator>(const MyClass& other) const // >

    // 实现操作

  

  bool operator<=(const MyClass& other) const // <=

    // 实现操作

  

  bool operator>=(const MyClass& other) const // >=

    // 实现操作

  

  bool operator==(const MyClass& other) const // ==

    // 实现操作

  

  bool operator!=(const MyClass& other) const // !=

    // 实现操作

  

};

3. 赋值运算符

赋值运算符用于将一个值赋给变量。C++中的赋值运算符是二元运算符,用于将右侧的值赋给左侧的变量。

赋值运算符的重载方法如下:


class MyClass {

public:

  MyClass& operator=(const MyClass& other) { // 赋值运算符

    if (this != &other)

      // 实现操作

    

    return *this;

  }

};

需要注意的是,赋值运算符应该返回当前对象的引用。

4. 输入和输出运算符

输入和输出运算符用于在控制台中输入或输出数据。C++中的输入和输出运算符分别是 `>>` 和 `<<`。

输入和输出运算符的重载方法如下:


class MyClass {

public:

  friend std::istream& operator>>(std::istream& in, MyClass& obj) // 输入运算符

    // 实现操作

    return in;

  

  friend std::ostream& operator<<(std::ostream& out, const MyClass& obj) // 输出运算符

    // 实现操作

    return out;

  

};

需要注意的是,输入和输出运算符通常需要声明为 `friend` 函数,以便访问私有成员。另外,输出运算符应该返回当前流的引用(即 `std::ostream&` 类型)。

综上所述,C++中的运算符都是可以被重载的,并且可以用于自定义数据类型的操作。掌握这些运算符的重载方法可以帮助你更好地使用C++编程语言。

  
  

评论区

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