您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    十分钟了解C ++中的运算符重载
    时间:2020-11-26 21:03 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    在C ++中,我们可以使运算符为用户定义的类任务。这意味着C ++可以为运算符提供数据类型的特殊含义,这种才能称为运算符重载。

    十分钟了解C ++中的运算符重载

    例如,我们可以在String之类的类中重载运算符'+',以便仅运用+就可以衔接两个字符串。 算术运算符能够会重载的其他示例类是双数,小数,大整数等。

    一个复杂而残缺的例子

    #include<iostream>  

    using namespace std;  

       

    class Complex {  

    private:  

        int real, imag;  

    public:  

        Complex(int r = 0, int i =0)  {real = r;   imag = i;}  

        Complex operator + (Complex const &obj) {  

             Complex res;  

             res.real = real + obj.real;  

             res.imag = imag + obj.imag;  

             return res;  

        }  

        void print() { cout << real << " + i" << imag << endl; }  

    };  

       

    int main()  

    {  

        Complex c1(10, 5), c2(2, 4);  

        Complex c3 = c1 + c2;  

        c3.print();  

    }  

    操作员功用和普通功用有什么区别?

    操作员功用与普通功用相反。独一的区别是,运算符的称号一直是运算符关键字,后跟运算符的符号,并且在运用相应的运算符时会调用运算符功用。

    以下是全局运算符功用的示例。

    #include<iostream>  

    using namespace std;  

       

    class Complex {  

    private:  

        int real, imag;  

    public:  

        Complex(int r = 0, int i =0)  {real = r;   imag = i;}  

        void print() { cout << real << " + i" << imag << endl; }  

     

    friend Complex operator + (Complex const &, Complex const &);  

    };  

       

       

    Complex operator + (Complex const &c1, Complex const &c2)  

    {  

         return Complex(c1.real + c2.real, c1.imag + c2.imag);  

    }  

       

       

    int main()  

    {  

        Complex c1(10, 5), c2(2, 4);  

        Complex c3 = c1 + c2;  

        c3.print();  

        return 0;  

    }  

    我们可以让一切运算符超负荷吗?

    除了少数操作员之外,简直一切操作员都可以重载。以下是不能重载的运算符的列表。

    为什么不能。(点),::,?:和sizeof能否过载?

    请参阅此以获取Stroustrup本人的答案。

    关于运算符重载的要点

    1)为了使运算符重载起作用,至少一个操作数必须是用户定义的类对象。

    2) 赋值运算符:编译器会自动为每个类创立一个默许的赋值运算符。默许赋值运算符确实将右侧的一切成员分配到左侧,并且在大少数状况下都可以正常任务(此行为与复制结构函数相反)。请参阅此了解更多概略。

    3) 转换运算符:我们还可以编写可用于将一种类型转换为另一种类型的转换运算符。

    #include <iostream>  

    using namespace std;  

    class Fraction  

    {  

        int num, den;  

    public:  

    (责任编辑:admin)