1. 程式人生 > >運算子過載,何時用友元,何時用成員函式

運算子過載,何時用友元,何時用成員函式

1.能用成員函式,儘量使用成員函式。因為,友元函式,可以訪問類內的所有資料,破壞了類的封裝。

2.當所過載的運算子的函式的引數中,含有該類不能訪問的資料時,用友元函式。因為,友元函式時全域性函式,它不在某一類中,可以訪問類之外的資料。

相關推薦

運算子過載何時何時成員函式

1.能用成員函式,儘量使用成員函式。因為,友元函式,可以訪問類內的所有資料,破壞了類的封裝。 2.當所過載的運算子的函式的引數中,含有該類不能訪問的資料時,用友元函式。因為,友元函式時全域性函式,它不在某一類中,可以訪問類之外的資料。

(轉)為什麼operator運算子過載一定要為函式

如果是過載雙目操作符(即為類的成員函式),就只要設定一個引數作為右側運算量,而左側運算量就是物件本身 而 >> 或<< 左側運算量是 cin或cout 而不是物件本身,所以不滿足後面一點,就只能申明為友元函數了 如果一定要宣告為成員函式,只能成為如下的形式:

為什麼operator運算子過載一定要為函式呢?

格拉德韋爾在《異數》:並非天資超人一等,而是付出了持續不斷的努力。只要經過1萬小時的錘鍊,任何人都能從平凡變成超凡”。要成為某個領域的專家,需要10000小時:如果每天工作八個小時,一週工作五天,那麼成為一個領域的專家至少需要五年。 linux原始碼線上閱讀 各種線編譯工具

定義一個複數類函式實現對雙目運算子“ + ”的運算子過載 使其適用於複數運算

////定義一個複數類,用友元函式實現對雙目運算子“ + ”的運算子過載,////使其適用於複數運算//#include<iostream>using namespace std;class Complex{private:int real;int imag;pu

等號操作符重載為什麽不能函數大揭秘以及函數沒有等到重載的時候賦值會出現什麽現象(盲點)

style 報錯 round 賦值運算符重載 -c post body opera 為什麽 先看下面程序結果輸出什麽? 1 #include <iostream> 2 using namespace std; 3 4 clas

學生類含學生姓名與成績函式訪問私有成員對兩個物件的成績進行比較。(2018.9.19 c++作業)

定義兩個物件,與一個友元函式(使用c++中引用傳遞的方式,實現引數的傳遞) #include using namespace std; class student { private: char name[20]; float grade; public: s

C++的魅力之操作符的過載簡單的函式

1.簡單的友元函式 友元函式可以直接訪問private:中的資料。 我們一定要認識到一點,相同class的各個object互為friends(友元) 比如: class complex { public

模板類中使用函式的方式派生類函式對基類的成員使用情況

在一般友元函式的前面加上 template<typename T),注意在函式的宣告和定義處都要加這個模板 例如: //模板類,長方體類 template <typename ElementType> class Rectangle { ///*過載基類的輸入輸出運算子*/

Verilog實現接受0.51的可樂售賣機單價2.5考慮找零和出貨。

第一步:畫出原理圖 第二步,將畫出的原理圖利用硬體語言實現 module fsm_cola_ctrl( input wire sclk, input wire rst_n, input wire [1:0]pi_money, output reg po_col

為什麼c++中過載流操作符要函式

1.先來看看友元函式過載流操作符例項 class complex { public: complex(int x, int y): real(x), imag(y){} complex():complex(0,0){} ~complex(){}

1251020,50組合成100

100元換零錢1元,2元,5元,10元,20元,50元有多少種組合方案 一道筆試題,當時就懵逼了。。。 找到遞推公式之後,其實也不難 F(N,M)=F(N,M-1)+F(N-VAL[M],M)

世界級U9提升製造企業商業創新能力

        整體發展戰略的銜接與管理變革的融合,對於企業在資訊時代的生存具有至關重要的重要意義。“十年之癢”無疑是個沉重的話題。隨著企業規模的不斷擴張和資訊科技的不斷深化,盲目崇洋媚外和本土管理理念上的巨大差異已經充分地暴露出來。         敏捷管理和多組織形態的融合需求,正在促使企業原有的管理

不用訪問類的私有成員變數的方法

   雖然沒有現實意義,但對理解C++的物件模型是很有幫助的。    前幾天,在論壇裡看到一個帖子,內容是:     (原帖見:http://community.csdn.net/Expert/topic/5014/5014384.xml?temp=.3018152)    

1251020和50的紙幣組成100共有多少種情況

  static void Main(string[] args)        {            int count = 0;            //1元組成的情況,最多有100種            for (int a = 0; a <= 100;

數論文章----關於逆的求法(尤拉定理階乘逆費馬小定理模質數p的情況)

乘法逆元 對於縮系中的元素,每個數a均有唯一的與之對應的乘法逆元x,使得ax≡1(mod n) 一個數有逆元的充分必要條件是gcd(a,n)=1,此時逆元唯一存在 逆元的含義:模n意義下,1個數a如果有逆元x,那麼除以a相當於乘以x。 下面給出求逆元的幾種方法: 1

beginthreadex()函式在建立多執行緒傳入回撥函式好像只能傳入全域性函式或類的靜態成員函式請問能不能傳入類的成員函式呢(非靜態)?

C++類成員函式直接作為執行緒回撥函式2009年06月01日 星期一 17:01我以前寫執行緒時要麼老老實實照著宣告寫,要麼使用C++類的靜態成員函式來作為回撥函式,經常會因為執行緒程式碼而破壞封裝.之前雖然知道類成員函式的展開形式,但從沒想過利用過它,昨天看深入ATL時無意中學

c++11 條款22:當使用Pimpl(指向實現的指標)時在實現檔案裡定義特定的成員函式

條款22:當使用Pimpl(指向實現的指標)時,在實現檔案裡定義特定的成員函式         假如你曾經和過多的編譯構建時間抗爭過,你應該熟悉Pimpl(指向實現的指標)這個術語。這項技術是你可以把類的資料成員替換成一個指向實現類(結構)的指標,把原來在主類中的資料成員

什麼是回撥函式如何定義和實現一個類的成員函式為回撥函式(轉)

C/C++中回撥函式初探    簡介   對於很多初學者來說,往往覺得回撥函式很神祕,很想知道回撥函式的工作原理。本文將要解釋什麼是回撥函式、它們有什麼好處、為什麼要使用它們等等問題,在開始之前,假設你已經熟知了函式指標。   什麼是回撥函式?   簡而言之,回撥函

c++成員運算子過載運算子過載的比較(以++--運算子為例)

1、對雙目運算子而言,成員運算子過載函式引數列表中含有一個引數,而友元運算子過載函式引數列表含有兩個引數;對單目運算子而言,成員運算子過載函式引數列表中沒有引數,而友元運算子過載函式引數列表含有一個引數。 2、雙目運算子一班可以被過載為友元運算子和成員函式運算