靜態成員與友元
1、實驗目的
·學習友元函式的定義和原理。
·學習靜態資料成員和靜態成員函式的使用。
·學習靜態成員代替全域性變數實現物件間的共享。
2、實驗內容
(1)有如下類的定義。類成員函式copy用於實現兩個物件的相互拷貝,請完成該函式的實現。(有兩種方法即用成員函式和友元函式實現)
#include
#include
using namespace std;
class myclass
void
copy
(myclass &my)
;void
set(
int a=1,
int b=1)
void
print()
friend void
mycopy
(myclass &a,myclass &b)
; private:
int x,y;};
void myclass:
:copy
(myclass &my)
void
mycopy
(myclass &a,myclass &b)
intmain()
(2)商店經銷一種貨物,貨物成箱購進,成箱賣出,購進和賣出時以重量為單位,各箱的重量不一樣,單價不一樣,因此商店需要記錄下目前庫存的貨物的總重量和總價值。編寫乙個程式,通過定義類carlo來模擬商店貨物購進和賣出的情況。
(本題目主要練習靜態資料成員的使用,定義私有變數存每件貨物的**和重量,用靜態資料成員存貨物的總重量和總價錢,定義建構函式和析構函式,當定義新的物件完成初始化的功能和刪除物件時,從總重量和總價錢中減去物件的重量和**)
#include
#include
using namespace std;
class carlo
;class menu
;double carlo:
:totalprice=
0.0;
double carlo:
:totalweight=
0.0;
carlo:
:carlo
(double weight,
double price)
const
double
&carlo:
:getcurrenttotalprice()
const
const
double
&carlo:
:getcurrenttotalweight()
const
void carlo:
:setcarlo
(double weight,
double price)
void carlo:
:buybox()
carlo.
setcarlo
(weight,price);}
void carlo:
:sellbox()
if(((weight*price)
>totalprice)
||weight>totalweight || totalprice<0)
else
}void carlo:
:showboxinfor()
const
carlo::~
carlo()
int menu:
:show
(carlo &carlo)
system
("cls");
}return0;
}int
main()
靜態成員與友元函式
1 靜態成員 由來 使用全域性物件實現資料共享,由於其處處可見,不夠安全,故可使用靜態成員實現類的多個物件之間的資料共享。包括 靜態資料成員 靜態成員函式 特點 靜態資料成員屬於類,而不屬於某個物件獨有,類的所有物件共享靜態資料成員 靜態資料成員使用關鍵字static,在類體中宣告,在類體外定義,以...
C 友元與靜態成員
c 中,類外的成員不能訪問類內的私有和保護型別成員。而友元函式可以不受訪問限制訪問類的任何成員。友元函式雖然可以在類內進行宣告,但是友元函式不是成員函式,因此沒有this指標。舉例說明 class clock clock clock int h,int m,int s void show clock...
實驗4 靜態成員與友元
1.除錯下列程式,寫出輸出結果,並分析輸出結果。解釋 建構函式進行賦值,所以a分別等於6和8,靜態成員函式b第一次賦值時,b 100 6 94,第二次賦值b 94 8 86。2.分析並除錯程式,完成下列問題。include include using namespace std class my m...