运算符重载解析"/>
C++ 运算符重载解析
C++运算符重载
C++的运算符重载其实就是定义一个函数,让运算符具有不同的功能。 在用到该运算符时,编译器会自动调用这个函数。也就是说,运算符重载是通过函数来实现的,本质上是函数重载(参数发生变化)。
运算符重载
返回值类型 operator运算符名称(参数列表){
}
运算符重载除了函数名有特定的格式外,和其他普通函数没有什么区别。
- 在类中定义运算符重载
- 在全局定义运算符重载、
在类中定义运算符重载:
#inculde<iostream>
using namespace std;class complex{
public:complex();complex(double real,double image);
public:comlplex operator+(const complex &A) const;
private:double m_real;double m_image;
};
complex::complex():m_real(0.0),m_image(0.0){}
complex::complex(double real,double image):m_real(real),#重载运算符
complex complex::operator+(const complex &A) const{complex B;B.m_real = this->m_real+A.m_real;B.m_image = this->m_image+A.m_image;return B;}
int main(){complex c1(2.3,3.1);complex c2(3.1,3.5);complex c3;c3 = c1+c2;
说明:const表示这是一个const成员函数,也叫常成员函数,常成员函数需要在声明和定义的时候在函数头部的尾部同时加上const。
c3 = c1 + c2 这句的意思就是:
c3 = c1.operator+(c2)
全局重载运算符:
#include <iostream>
using namespace std;
class complex{
public: complex(); complex(double real, double imag);
public: void display() const; //声明为友元函数 frend complex operator+(const complex &A,const complex &B);
private: double m_real; double m_imag;
};
complex operator+(const complex&A,const complex&B);complex operator+(const complex &A, const complex &B)
{complex C;C.m_real = A.m_real + B.m_real;C.m_image = A.m_image + B.m_image;return C;
}
运算符重载函数不是 complex 类的成员函数,但是却用到了 complex 类的 private 成员变量,所以必须在 complex 类中将该函数声明为友元函数。
更多推荐
C++ 运算符重载解析
发布评论