關於友員函式的低階錯誤

2021-04-02 22:06:30 字數 557 閱讀 6302

「類的友員函式可以直接訪問該類的所有成員,但它不是成員函式,可以象普通函式一樣在任何地方被呼叫」

這樣看上去,友員函式與成員函式的區別就僅僅在於友員函式可以在任何地方被呼叫,於是我寫了下面的**:

class cdemo

;void showmsg(void)

cout << "m_a=" <無法通過編譯,顯示m_a沒有定義。

看看這幾句話:

3)友元函式不能直接訪問類的成員

,只能訪問物件成員

, 4)

友元函式可以訪問物件的私有成員

,但普通函式不行

; 5)

調用友元函式時

,在實際引數中需要指出要訪問的物件,

看來,友員函式與成員函式的區別不只是呼叫規則不同,友員函式需要傳其本類物件的引數,與其他非友員非成員函式相比,它多了可以直接:物件.私有資料  的功能

修改後的**執行正常;

class cdemo

;void showmsg(cdemo  &demo)

cout << "m_a=" <

關於友員函式的低階錯誤

類的友員函式可以直接訪問該類的所有成員,但它不是成員函式,可以象普通函式一樣在任何地方被呼叫 這樣看上去,友員函式與成員函式的區別就僅僅在於友員函式可以在任何地方被呼叫,於是我寫了下面的 class cdemo void showmsg void cout m a 無法通過編譯,顯示m a沒有定義。...

丟人的低階錯誤

今天犯了乙個低階錯誤 將乙個查詢很慢的帶有多個join的sql,使用store procedure 臨時表先得到篩選的結果後再join,用來加速這個sql 可是期間犯了乙個低階錯誤,原來的sql有聚合函式 所以使用了group by。我在拆分的時候前半部分插入臨時表的資料使用group by 是沒問...

友員函式 friend

1 普通函式做友員函式,為什麼,什麼場景?運算子過載 2 某個類的成員函式作為另乙個類的友員函式?如何使用 3 友員類,有啥作用 宣告後其成員都變為另乙個類的友員 3 友員函式是如何定義的 宣告名和定義 4 友員函式是否可以繼承?基類和派生類 5 乙個類的成員函式是否可以作為另乙個類的友員函式?類a...