注明:关于运算符重载的问题,我遇到过很多次,依然没有记住。痛心疾首!
运算符重载的典型使用:在玩游戏时弹出来一个广告,我们点关闭结果打开了广告,就是代码定义的是打开给我们显示的是关闭。
运算符重载:
1.概念:把运算符operator+当做一个函数来看,把对象当做一个复数,来进行实部与实部,虚部与虚部的相加。返回一个对象。
Complex operator + (Complex &c2); // Complex是函数类型,operator+为函数名,c2为另一个对象,也就是要操作的对象。
.h文件
#ifndef COMPLEX_H_
#define COMPLEX_H_
//复数
class Complex
{
public:
double i;
double j;
Complex(); //构造函数
Complex(double i, double j); //构造函数
Complex operator + (Complex &c2); //普通函数也就是运算符重载的函数
void show();
};
#endif /* COMPLEX_H_ */
.cpp文件
#include "Complex.h"
#include <iostream>
using namespace std;
Complex::Complex()
{
this->i = 0;
this->j = 0;
}
Complex::Complex(double i,double j) {
this->j = j;
this->i = i;
}
void Complex::show() {
cout<<"i="<<this->i<<":j="<<this->j<<endl;
}
Complex Complex::operator + (Complex &c2) { //进行两个对象的相加,实部与实部相加,虚部与虚部相加。
Complex c;//c.i==0; c.j==0
c.i = this->i + c2.i;//c.i=1+1.1
c.j = this->j + c2.j;//c.j=2+2.2
//c.i=2.1; c.j=4.2
return c; //返回和的对象
}
//C语言也可以用运算符重载,但是必须加friend或者把变量定义为public,私有的访问不到。
main.cpp文件
#include <iostream>
using namespace std;
#include "Complex.h"
void f1()
{
Complex c1(1, 2);//c1.i=1;c1.j=2
Complex c2(1.1, 2.2);//c2.i=1.1;c2.j=2.2
// Complex c3 = c1.operator+(c2);//c3.i=2.1; c3.j=4.2
Complex c3 = c1 + c2;
c3.show();
}
int main() {
f1();
return 0;
}