"运算符"几乎是所有的编程语言中都会出现的概念,例如+、-、*、/ 就是最常见的运算符 。C++预定义的运算符只能作用于C++已经定义的基本数据类型,对于用户自定义的类型,如果也需要进行类似的运算操作的话,就需要重新去定义这些运算,赋予运算符新的功能,即"运算符重载" 。一、运算符重载时需要注意的点
- 运算符重载不改变运算符的"优先级"与"结合性",也不改变运算符的操作数个数 。
- 重载运算符时不应该改变运算符的含义,比如说"+"重载之后仍然表示加法的含义 。
- 运算符重载的本质是函数重载,运算符函数可以作为成员函数,也可以作为非成员函数,作为非成员函数时一般为友元函数 。
- 在大多数情况下,将运算符函数重载为类的成员函数和类的友元函数都是可以的 。但是要注意下面几个运算符函数必须要重载为成员函数:=、[]、()、-> 。
- C++中大部分运算符都是可以被重载的,但是有5个运算符不允许被重载:"."、".*"、"::"、"?:"、"sizeof" 。
<返回值类型> operator<运算符>(<形参列表>){//函数体}
三、运算符重载实例(复数类)#include <IOStream>using namespace std;class Complex {public:Complex(int real, int imag);~Complex();// 成员函数重载运算符Complex& operator+(const Complex& c);// 友元函数重载"流操作运算运算符"friend ostream& operator<<(ostream& out, const Complex& c);private:int real_;int imag_;};Complex::Complex(int real, int imag){real_ = real;imag_ = imag;}Complex::~Complex(){}Complex& Complex::operator+(const Complex& c){this->real_ += c.real_;this->imag_ += c.imag_;return *this;}ostream& operator<<(ostream& out, const Complex& c){out << c.real_;if(c.imag_ > 0)out << "+" << c.imag_ << "i";elseout << c.imag_ << "i";return out;}int main(){Complex a(4, -6);cout << a << endl;// 等于operator<<(cout, a);Complex b(4, 3);cout << b << endl;Complex c = a + b;cout << c << endl;return 0;}
文章插图
推荐阅读
- nginx和tomcat中的https证书配置
- 平阳黄汤购买技巧,温州平阳黄汤黄茶类中的黄小茶
- 平阳黄汤冲泡步骤,温州平阳黄汤黄茶类中的黄小茶
- 普洱茶发酵原理,普洱茶发酵中的有氧发酵与厌氧发酵
- 详细解释,从入门到实践,逐步讲解 经典中的经典算法,动态规划
- 四川雅安的蒙顶黄芽,川茶中的代表蒙顶黄芽
- 黄茶中的君山银针,君山银针的保质期
- 黄茶哪里产的最好,温州平阳黄汤黄茶类中的黄小茶
- 平阳黄汤用什么器具冲泡,温州平阳黄汤黄茶类中的黄小茶
- 六大茶类的基本知识,温州平阳黄汤黄茶类中的黄小茶