(物件導向程式設計)實驗三 靜態成員與友元

2021-10-07 03:43:19 字數 2448 閱讀 3131

·學習友元函式的定義和原理。

·學習靜態資料成員和靜態成員函式的使用。

·學習靜態成員代替全域性變數實現物件間的共享。

(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,在類體中宣告,在類體外定義,以...