在這個例子中,我們將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
class
humidity;
class
temperature
friend
void
printweather(temperature &ctemperature, humidity &chumidity);
};
class
humidity
friend
void
printweather(temperature &ctemperature, humidity &chumidity);
};
void
printweather(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
class
storage
// make the display class a friend of storage
friend
class
display;
};
class
display
void
displayitem(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...