日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++之操作符重载和运算符重载

發布時間:2024/9/21 c/c++ 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++之操作符重载和运算符重载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、學習要點:
1.類中定義的構造器可以必須在類中聲明,但定義可以在類內和類外.
2.插入器和吸取器的構造類型必須輸入參數和輸出參數都含有對象,這樣可以不斷保證右插.
3.而且輸入輸出中都含有流的引用,因為流靠的系統托管,
4.輸入的參數為什么也為對象的引用,因為類對象占用內存較大,引用傳遞時,無需在棧內存中開辟空間以裝載臨時對象,也省去了復制的耗時過程,為了避免改變形參的內容,還需配以const加以修飾。
5.函數參數為對象引用,可以不用在開辟在棧中開辟空間,也省去了類對象的復制時間,高效,但這樣是不安全的,容易改變類對象的值,安全起見,在類對象前面加上const,既保證高效性,有保證安全性.
6.關于流引用的理解,重載輸入輸出操作符函數,會修改操作你的流,而流是全局的,不是臨時變量,是系統托管的。如果不返回引用,第二次插入操作將會導致插入到那個臨時的流對象,而顯示的會是那個全局的流,所以就看不到b了.
7.一個類的成員函數想訪問另一個類的成員變量,這個類的成員函數必須聲明為另一個類的友元函數.
二、代碼實現
友元函數部分:
聲明部分

friend istream& operator>>(istream&,Complex &i); friend ostream& operator<<(ostream&,Complex &c)

定義部分

istream& operator>>(istream& input,Complex &i){ input>>i.real>>i.image; return input; } ostream& operator<<(ostream& output,Complex &c){ output<<"("<<c.real<<"+"<<c.image<<"i"<<")"<<endl; return output;}

可運行版完整代碼:

#include<iostream> #include<stdlib.h> using namespace std; class Complex{ public:Complex():real(0),image(0){};//構造器的函數定義是在類中,使用的是內聯函數Complex(int r,int i):real(r),image(i){};//構造器的函數定義是在類中,使用的是內聯函數Complex(int r):real(r),image(0){};Complex operator+(Complex &c);friend istream& operator>>(istream&,Complex &i);//輸入輸出屬于另一個類的成員函數friend ostream& operator<<(ostream&,Complex &c); private:int real;int image; }; Complex Complex::operator+(Complex &c){return Complex(c.real+real,c.image+image); }istream& operator>>(istream& input,Complex &i){cout<<"please input real and image";input>>i.real>>i.image;//重載未完成之前,>>還是流的輸入函數return input; } ostream& operator<<(ostream& output,Complex &c){output<<"("<<c.real<<"+"<<c.image<<"i"<<")"<<endl;//重載未完成之前,還是流的輸出函數return output; } int main(){Complex c1,c2;Complex c3(1);cin>>c1>>c2;cout<<c1+c2<<endl;cout<<c3<<endl;system("pause");return 0; }

三、代碼運行結果

四、注意事項:
1.C++中一切皆對象,對象引用不僅可以節省時間還有空間,為保證對象的安全,多采用在引用之前加const,變引用雙向傳遞為單向傳遞.
2.重載主要看函數的輸入參數,而決定調用那個函數,像上面的例子,<<中重載函數中又有<<不是遞歸調用,而重載函數中的<<操作對象發生了變化,調用的不是重載本身,調用的是正常的輸入函數.
3.流類是系統托管.

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的C++之操作符重载和运算符重载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。