程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> C++運算符重載 成員函數與友元函數詳解

C++運算符重載 成員函數與友元函數詳解

編輯:更多關於編程
    以下是對C++運算符重載 成員函數與友元函數進行了介紹,需要的朋友可以過來參考下   復制代碼 代碼如下:
    #include<iostream>
    using namespace std;
    class A
    {
        int x,y;
        public:
        A(int xx,int yy):x(xx),y(yy){}
        A(){x=0;y=0;}
        A operator+(const A&b) //不加const限定,也可以
        { return A(x+b.x,y+b.y); }
        A operator-()
        { return A(-x,-y); }
        void show()
        {cout<<"x="<<x<<" y="<<y<<endl;}
    };
    void test_A()
    {
        A a1(2008,512),a2(2013,420),a3;
        a3=a1+a2; //調用操作符重載函數: a1.oprator +(a2)
        a3.show();
        a1=-a1; //調用操作符重載函數: a1.operator -()
        a1.show();
    }
    /***********************
    執行結果
    x=4021 y=93
    x=-2008 y=-512
    **********************/
    class B
    {
        int x,y;
        public:
            B(int xx,int yy):x(xx),y(yy){}
            B(){x=0;y=0;}
            friend B operator+(const B&a,const B&b);
            friend B operator-(const B&a);
            void show()
            {cout<<"x="<<x<<" y="<<y<<endl;};
    };
    B operator+(const B&a,const B&b)
    {return B(a.x+b.x,a.y+b.y);}
    B operator-(const B&a)
    {return B(-a.x,-a.y);}
    /***************************
    class B
    {
        int x,y;
        public:
            B(int xx,int yy):x(xx),y(yy){}
            B(){x=0;y=0;}
            friend B operator+(const B&a,const B&b)
                    {return B(a.x+b.x,a.y+b.y);}
            friend B operator-(const B&a)
                {return B(-a.x,-a.y);}
            void show()
            {cout<<"x="<<x<<" y="<<y<<endl;};
    }
    ********************************/
    int main()
    {
        B B1(1991,1105),B2(2013,62),B3;
        B3=B1+B2; //調用操作符重載函數: a1.oprator +(a2)
        B3.show();
        B1=-B1; //調用操作符重載函數: a1.operator +()
        B1.show();
    }
    /****************************
    運行結果:
    x=4004 y=1167
    x=-1991 y=-1105
    Process returned 0 (0x0)   execution time : 0.021 s
    Press any key to continue.

    *****************************/

     

    復制代碼 代碼如下:


    #include<iostream>
    using namespace std;
    class A
    {
        int x,y;
        public:
        A(int xx,int yy):x(xx),y(yy){}
        A(){x=0;y=0;}
        A operator+(const A&b) //不加const限定,也可以
        { return A(x+b.x,y+b.y); }
        A operator-()
        { return A(-x,-y); }
        void show()
        {cout<<"x="<<x<<" y="<<y<<endl;}
    };
    void test_A()
    {
        A a1(2008,512),a2(2013,420),a3;
        a3=a1+a2; //調用操作符重載函數: a1.oprator +(a2)
        a3.show();
        a1=-a1; //調用操作符重載函數: a1.operator -()
        a1.show();
    }
    /***********************
    執行結果
    x=4021 y=93
    x=-2008 y=-512
    **********************/
    class B
    {
        int x,y;
        public:
            B(int xx,int yy):x(xx),y(yy){}
            B(){x=0;y=0;}
            friend B operator+(const B&a,const B&b);
            friend B operator-(const B&a);
            void show()
            {cout<<"x="<<x<<" y="<<y<<endl;};
    };
    B operator+(const B&a,const B&b)
    {return B(a.x+b.x,a.y+b.y);}
    B operator-(const B&a)
    {return B(-a.x,-a.y);}
    /***************************
    class B
    {
        int x,y;
        public:
            B(int xx,int yy):x(xx),y(yy){}
            B(){x=0;y=0;}
            friend B operator+(const B&a,const B&b)
                    {return B(a.x+b.x,a.y+b.y);}
            friend B operator-(const B&a)
                {return B(-a.x,-a.y);}
            void show()
            {cout<<"x="<<x<<" y="<<y<<endl;};
    }
    ********************************/
    int main()
    {
        B B1(1991,1105),B2(2013,62),B3;
        B3=B1+B2; //調用操作符重載函數: a1.oprator +(a2)
        B3.show();
        B1=-B1; //調用操作符重載函數: a1.operator +()
        B1.show();
    }
    /****************************
    運行結果:
    x=4004 y=1167
    x=-1991 y=-1105
    Process returned 0 (0x0)   execution time : 0.021 s
    Press any key to continue.
    *****************************/

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved