物件作為引數

2021-06-22 20:04:50 字數 2390 閱讀 3328

在這個例子中,我們將isequal()功能是價值流的乙個朋友。isequal()取兩個值物件作為引數。因為isequal()是價值類的朋友,它可以訪問所有的值物件的私有成員。在這種情況下,它使用的訪問在兩個物件做乙個比較,並返回true,如果他們是平等的。

乙個函式可以同時對多個類的乙個朋友。例如,考慮下面的例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

classhumidity;

classtemperature

friendvoidprintweather(temperature &ctemperature, humidity &chumidity);

};

classhumidity

friendvoidprintweather(temperature &ctemperature, humidity &chumidity);

};

voidprintweather(temperature &ctemperature, humidity &chumidity)

有兩件事值得注意的例子。

首先,因為printweather是兩類的朋友,它可以訪問的類物件的私有資料。第二,

注意下面的

線在例子的頂部:

這是乙個類的原型,告訴編譯器,我們將來要定義乙個類稱為濕度。沒有這條線,編譯器會告訴我們他們不知道什麼是濕度在分析原型內部溫度類printweather()。類的原型的作用相當於函式原型一樣——他們告訴編譯器事情看上去是什麼樣子的,可現在和以後的定義。然而,不像函式,類沒有返回型別或引數,因此類原型總是簡單的類的類名,其中classname類的名稱。

友元類它也可能使整個類的朋友,另乙個班。這給所有的朋友類可以訪問其他類的私有成員,成員。這裡有乙個例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

classstorage

// make the display class a friend of storage

friendclassdisplay;

};

classdisplay

voiddisplayitem(storage &cstorage)

};

物件作為函式引數

物件作為函式的引數時,其傳遞過程較為複雜,傳遞方式比較獨特。其傳參過程與陣列不同 陣列變數的名稱代表陣列的首位址,而物件的變數名稱卻不能代表物件的首位址。傳參時不會像陣列那樣以首位址作為函式的引數傳遞,而是先將物件中的所有資料進行備份 複製 將複製的資料作為形參傳遞到呼叫函式中去 類物件中的資料成員...

類物件作為函式引數

網上看見一段 是關於類物件作為函式的引數,其中有幾點知識,貼出來大家一起學習。直接來看 include include using namespace std class people people people char namestr,int i people people char peopl...

Python之函式物件作為引數

秉承著一切皆物件的理念,我們再次回頭來看函式 function 函式也是乙個物件,具有屬性 可以使用dir 查詢 作為物件,它還可以賦值給其它物件名,或者作為引數傳遞。函式可以作為乙個物件,進行引數傳遞。函式名 比如func 即該物件。比如說 def test f,a,b print test pr...