C++的函数重载篇(二)——运算符的重载

xiaoxiao2021-02-28  32

       实际上,C++在设计初就运用了函数的重载,如“+”就可以对整数,浮点数进行运算;“<<”左移运算符可以当作提取运算符使用。下面要介绍的便是运算符的重载。

        运算符重载有以下规则:

            1、C++不允许用户定义新的运算符,只能对C++已有的运算符进行重载;

            2、C++不能重载的运算符只有5个,分别是.(成员运算符)、*(成员指针访问运算符)、::(域运算符)、sizeof(长度运算符)、?:(条件运算符);

            3、重载不能够运算符对象(操作数)的个数;

            4、重载不能够改变运算符的优先级;

            5、重载不能够改变运算符的结合性-->如 赋值运算符"="是右结合性,自右向左,重载后仍为右结合性;

            6、重载的运算符不能够有默认的参数,否则就改变了运算符操作对象的个数。

            7、重载的运算符必须和用户自定义的类型的对象一起使用,其参数至少有一个是类对象或者是类对象的引用。

                       以“+”重载复数运算为例:  Complex operator +(int a ,Complex c){

                                                                           return Complex(a+c.real,c.img);

                                                                }

            8、用于类对象的运算符一般必须重载,但是有两个运算符例外,  =  &  不必用户重载。

“+”重载为复数运算的实例:

#include <iostream> using namespace std; class Complex { public: Complex(){real=0;img=0;} Complex(double r,double i){real=r;img=i;} Complex operator + (Complex &c2); //声明重载运算符“+”的函数 void display(); private: double real; double img; }; Complex Complex :: operator +(Complex &c2) //定义重载运算符"+"的函数 { Complex c; c.real = real + c2.real; c.img = img + c2.img; return c; } void Complex :: display() { cout<<"("<<real<<","<<img<<"i)"<<endl; } int main() { Complex c1(3,4),c2(5,-10),c3; c3=c1+c2; cout<<"c1="; c1.display(); cout<<"c2="; c2.display(); cout<<"c1+c2="; c3.display(); return 0; }

总结说明:

    重载运算符的函数一般格式如下:

    1、函数类型 operator 运算符名称 (形参表){对运算符重载的处理;}

    2、函数名是由 operator 和运算符名称组成的。

    3、c1.operator+(c2)是c1+c2的解释。

截图如下:

转载请注明原文地址: https://www.6miu.com/read-2150248.html

最新回复(0)