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