运算符(operator)重载
- 格式:ppt
- 大小:2.14 MB
- 文档页数:19


C++基础系列——运算符重载
1. 运算符重载简介
所谓重载,就是赋予新的含义。函数重载(Function Overloading)可以让⼀个函数名有多种功能,在不同情况下进⾏不同的操作。同样运算符重载(OperatorOverloading)可以让同⼀个运算符可以有不同的功能。
可以对 int、float、string 等不同类型数据进⾏操作<< 既是位移运算符,⼜可以配合 cout 向控制台输出数据
也可以⾃定义运算符重载:class Complex
{
public:
Complex();
Complex(double real, double imag);
Complex operator+(const Complex &a) const;
void display() const;
private:
double m_real;
double m_imag;
};
// ...
// 实现运算符重载
Complex Complex::operator+(const Complex &A) const{
Complex B;
B.m_real = this->m_real + A.m_real;
B.m_imag = this -> m_imag + A.m_imag;
return B;
// return Complex(this->m_real + A.m_real, this->m_imag + A.m_imag);
}
int main(){
Complex c1(4.3, 5.8);
Complex c2(2.7, 3.7);
Complex c3;
c3 = c1 + c2; // 运算符重载
c3.display();
return 0;
}
运算结果7 + 9.5i
运算符重载其实就是定义⼀个函数,在函数体内实现想要的功能,当⽤到该运算符时,编译器会⾃动调⽤这个函数,它本质上是函数重载。c3 = c1 + c2;
operator 函数
Operator 函数,也叫重载运算符函数,是 C++ 中一种特殊的成员函数。它们用于自定义数据类型之间的运算,实现运算符对这些数据类型的支持,为C++语言的多样性和灵活性提供了支持。
在C++中,它提供了一组预定义的运算符,它们表示算术、比较、位、逻辑操作等等。重载运算符函数的目的是为了扩展这个集合,通过定义自定义的运算符,而且也支持成员函数和非成员函数的形式。
那么,什么情况下需要使用operator 函数呢?通常,当两种或两种以上的自定义类型需要进行操作时,我们需要使用operator 函数。下面将介绍operator 函数常见的形式和具体应用。
1. 一元算术运算符
一元算术运算符表示只有一个参数的运算,包括正号、负号、自增、自减运算符。如果我们需要对自定义类型进行一元运算,需要实现
operator+,operator-,operator++ 和 operator-- 函数。示例代码如下:
```c++
class MyNum {
public:
int value;
MyNum operator+(const MyNum& num) {
MyNum result;
result.value = value + num.value;
return result;
} MyNum operator-() {
MyNum result;
result.value = -value;
return result;
}
MyNum operator++() {
value++;
return *this;
}
MyNum operator--(int) {
MyNum result = *this;
c++ 结构operator用法
摘要:
1.C++结构体的概述
2.结构体的成员访问和修改
3.结构体的运算符重载
4.结构体的函数成员
5.结构体与类的异同
正文:
C++结构体是一种聚合数据类型,它可以将多个不同类型的数据组合在一起。结构体主要应用于以下场景:表示对象的属性和方法、表示数组或指针的尺寸和类型、表示函数的参数和返回值等。本篇文章将详细介绍 C++结构体的相关知识,包括结构体的成员访问和修改、运算符重载、函数成员以及结构体与类的异同。
首先,我们来了解结构体的成员访问和修改。结构体的成员可以通过点运算符(.)或箭头运算符(->)进行访问和修改。例如,定义一个表示点的结构体 Point,其中包含 x 和 y 坐标,可以通过以下方式访问和修改成员变量:
```cpp
struct Point {
int x;
int y;
};
int main() { Point p1;
p1.x = 1;
p1.y = 2;
cout << "P1( " << p1.x << ", " << p1.y << " )" << endl;
return 0;
}
```
接下来,我们介绍结构体的运算符重载。当结构体中包含运算符重载函数时,需要使用友元声明。例如,定义一个表示复数的结构体 Complex,其中包含实部和虚部,可以重载+、-、*、/等运算符:
```cpp
struct Complex {
double real;
double imag;
public:
friend double Complex::operator+(const Complex& c1, const
Complex& c2);
friend double Complex::operator-(const Complex& c1, const
c++ 结构operator用法
C++ 结构体是一种复合数据类型,它可以将不同类型的数据组合在一起。在 C++ 中,结构体可以用于封装和组织相关联的数据,使得程序的设计更加模块化和清晰。本文将介绍 C++ 结构体中操作符的重载用法,以及相关注意事项。
1.C++ 结构体简介
C++ 结构体是一种用户自定义的数据类型,它可以将不同类型的变量组合在一起。结构体中的变量称为成员变量,我们可以通过成员变量访问运算符(点运算符)来访问结构体中的数据。
2.操作符重载概述
在 C++ 中,操作符重载是指对已有运算符进行重载定义,以便在特定类型上执行特定操作。结构体操作符重载可以让结构体具有更友好的用户接口,使用户能更方便地操作结构体数据。
3.结构体操作符重载实例
以下是一个结构体操作符重载的实例:
```cpp
#include
using namespace std;
struct Point {
int x;
int y; };
// 重载加法运算符
Point operator+(const Point &a, const Point &b) {
Point result;
result.x = a.x + b.x;
result.y = a.y + b.y;
return result;
}
int main() {
Point p1(1, 2);
Point p2(3, 4);
Point p3 = p1 + p2;
cout << "p3 的坐标为:" << p3.x << "," << p3.y << endl;
return 0;
}
```
在上面的示例中,我们为结构体 Point 重载了加法运算符。通过重载后的加法运算符,我们可以直接对两个 Point 类型的对象进行加法运算,并得到一个新的 Point 类型的对象。