C++的操作符重載概述

來源:互聯網
上載者:User

1.什麼是操作符重載

可以使用分詞將操作符重載理解為:操作符+重載。

C++中的操作符很多,如+,-,*,\等等。

C++中的重載也是C++中物件導向多態的體現。

簡單說操作符重載:

C++中有:int a=2+3;  那麼a=5

操作符重載可以實現對自訂類型的操作:

#include <iostream>using namespace std;    class Point{public:    int x;    int y;    Point(int _x,int _y):x(_x),y(_y){    }        Point operator+(Point &p){        int t1=this->x+p.x;        int t2=this->y+p.y;        Point t(t1,t2);        return t;    }};    int main(){    Point p1(1,3);    Point p2(2,6);    Point p3 = p1+p2;    cout<<"p3:("<<p3.x<<","<<p3.y<<")";     ///執行輸出:p3:(3,9)    return 0;}

2.操作符重載的方式

操作符重載的實現方式有兩種,即通過“友元函數”或者“類成員函數”。如下面代碼顯示了這兩種操作符重載:

class Point{public:    int x;    int y;    Point(int _x,int _y);        Point operator+(Point &p);  ///類成員函數,類成員函數可以使用this指標擷取自身對象        friend int operator*(Point &p1,Point &p2);  ///友元函數};

可以看出,一個重載“+”,一個重載“*”,都是雙目運算子,但是類成員函數只有一個參數。這是因為類成員函數可以使用this指標擷取自身的對象,而友元函數則不行。

所以類成員實現操作符重載需要的形式參數比原來少一個,這樣使用類成員函數實現一元操作符就不需要參數了。

3.操作符重載例子

#include <iostream>using namespace std;    class Point{public:    int x;    int y;    Point(int _x,int _y):x(_x),y(_y){    }        Point operator+(Point &p){  ///實現座標向量加        int t1=this->x+p.x;        int t2=this->y+p.y;        Point t(t1,t2);        return t;    }        friend int operator*(Point &p1,Point &p2);  ///實現內積};    int operator*(Point &p1,Point &p2){    return (p1.x*p2.x)+(p1.y*p2.y);}    int main(){    Point p1(1,3);    Point p2(2,6);    cout<<p1*p2<<endl;  ///輸出內積:20        Point p3 = p1+p2;    cout<<"p3:("<<p3.x<<","<<p3.y<<")"<<endl;   ///輸出座標和:(3,9)    return 0;}

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。