一、什么是运算符重载
重新定义运算符的功能,比如实现加、减、乘、除、括号等运算符其他功能。让程序可读性更强。
二、运算符重载原理
比如两个整数相加:
int a=2;
int b=3;
int c=a+b;
可以把加号看成int类里面的一个函数,即:
int a=2;
int b=3;
int c=a.+(b);
也就是:加号为函数,加号前面为类对象本身,加号后面函数参数。
那么,加号函数是怎么定义的呢?通过operator关键字。
int operator+(int &numer)const{}
引用作为形参是为了节省内存开销。
三、实战
实现自定义类的加减,我们实现复数的加减。
复数有实部和虚部,并定义display函数显示。
1.类成员定义
#pragma once
class complex
{
public:
complex() {};
complex(int r, int v) :real(r), vir(v) {};
~complex() {};
complex operator+(complex &c)const;
complex operator-(complex & c)const;
void display();
private:
int real, vir;
};
2.函数实现
#include "complex.h"
#include<iostream>
using namespace std;
complex complex::operator+(complex &c)const {
return complex(real + c.real, vir + c.vir);
}
complex complex::operator-(complex& c)const {
return complex(real - c.real, vir - c.vir);
}
void complex::display() {
cout << "实部为:" << real << endl
<< "虚部为:" << vir << endl;
}
3 主函数
#include<iostream>
#include"complex.h"
using namespace std;
void main(){
complex c1(2, 1);
complex c2(5, 2);
complex c3 = c1 + c2;
c3.display();
}
总结
运算符重载就是定义了一个符号函数,使用operator关键字定义,符号为函数,符号前面为类对象本身,符号后面函数参数。
本文详细介绍了运算符重载的概念及其实现原理,并通过实战演示了如何为自定义的复数类实现加减运算。
1137

被折叠的 条评论
为什么被折叠?



