靜態成員與友元

2021-09-28 18:42:23 字數 1900 閱讀 8419

靜態成員與友元

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...