C++筆記 第二十八課 友元的尷尬能力---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。
學習C++編譯環境:Linux
第二十八課 友元的尷尬能力
1.友元的概念
什麼是友元?
友元是C++中的一種關係
友元關係發生在函式與類之間或者類與類之間
友元關係是單項的,不能傳遞
2.友元的用法
在類中以friend關鍵字宣告友元
類的友元可以是其他類或者具體函式
友元不是類的一部分
友元不受類中訪問級別的限制
友元可以直接訪問具體類的所有成員
3.友元的語法
在類中用friend關鍵字對函式或類進行宣告
28-1 友元的使用初探
4.友元的尷尬
友元是為了兼顧C語言的高效而誕生的
友元直接破壞了面對物件的封裝性
友元在實際產品中的高效是得不償失的
友元在現代軟體工程中已經逐漸被遺棄
5.注意事項
友元關係不具備傳遞性
類的友元可以是其他類的成員函式
類的友元可以是某個完整的類
所有的成員函式都是友元
28-2 友元的深入分析
小結
友元是為了兼顧C語言的高效而誕生的
友元直接破壞了面向物件的封裝性
友元關係不具備傳遞性
類的友元可以是其他類的成員函式
類的友元可以是某個完整的類
相關推薦
C++筆記 第二十八課 友元的尷尬能力---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第二十八課 友元的尷尬能力 1.友元的概念 什麼是友元? 友元是C++中的一種關係 友元關係發生在函式與類之間或者類與類之間 友元關係是單項的,不能傳遞 2.友元的用法
C++筆記 第二十七課 二階構造模式---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第二十七課 二階構造模式 1.建構函式的回顧 關於建構函式 類的建構函式用於物件的初始化 建構函式與類同名並且沒有返回值 建構函式在物件定義時自動被呼叫 2.問題 1
C++筆記 第二十四課 經典問題解析二---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第二十四課 經典問題解析二 1.關於析構的疑問 當程式中存在多個物件的時候,如何確定這些物件的析構順序? 單個物件建立時解構函式的呼叫順序 1.呼叫父類的析構過程(後續課程中
C++筆記 第二十一課 物件的構造順序---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第二十一課 物件的構造順序 問題:C++中的類可以定義多個物件,那麼物件構造的順序是怎樣的? 1.物件的構造順序一 對於 區域性物件 當程式執行流到達物件的定義語句時進行
C++筆記 第十六課 類的真正形態---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第十六課 類的真正形態 問題:經過不停的改進,結構體struct變得越來越不像它在C語言中的樣子!!! 1.類的關鍵字 struct在C語言中已經有了自己的含義,必須繼續
C++筆記 第十二課 經典問題解析一---狄泰學院
#1024程式設計師節# 如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第十二課 經典問題解析一 1.關於const的疑問 const什麼時候是隻讀變數?什麼時候是常量? const常量的判斷準則 只有用字面量初始化
C++筆記 第十一課 新型的型別轉換---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第十一課 新型的型別轉換 1.強制型別轉換 C方式的強制型別轉換 (Type)(Expression) Type (Expression)—老式型別 11-1 粗暴的型別轉
C++筆記(十八)——友元
一、友元的產生條件: 類的主要特點之一是資料隱藏,即類的私有成員只能在類定義的範圍內使用,也就是說私有成員只能通過它的成員函式來訪問。 但是,有時候需要在類的外部訪問類的私有成員。為此,就需要尋找一種途徑,在不放棄私有資料安全性的情況下,使得類外部的函式或類能夠訪問類中的私有成員
C++筆記 第三十八課 邏輯操作符的陷阱---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第三十八課 邏輯操作符的陷阱 1.潛規則 邏輯運算子的原生語義 運算元只有兩種值(true和false) 邏輯表示式不用完全計算就能確定最終值—短路規則 最終結果只能是tru
C++筆記 第二十六課 類的靜態成員函式---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第二十六課 類的靜態成員函式 1.未完成的需求 統計在程式執行期間某個類的物件數目 保證程式的安全性(不能使用全域性變數) 隨時可以獲取當前物件的數目(Failure)
C++筆記 第二十五課 類的靜態成員變數---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第二十五課 類的靜態成員變數 1.成員變數的回顧 通過物件名能夠訪問public成員變數 每個物件的成員變數都是專屬的 成員變數不能在物件之間共享 2.新的需求 統計
C++筆記 第二十二課 物件的銷燬---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第二十二課 物件的銷燬 1.物件的銷燬 生活中的物件都是被初始化後才上市的 生活中的物件被銷燬前會做一些清理工作 問題:C++中如何清理需要銷燬的物件 一般而言,需要銷燬的物
C++筆記 第十八課 物件的構造(中)---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第十八課 物件的構造(中) 1.建構函式 帶有引數的建構函式 建構函式可以根據需要定義引數 一個類中可以存在多個過載的建構函式 建構函式的過載遵循C++過載的規則 友情提示
C++筆記 第二十九課 類中的函式過載---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第二十九課 類中的函式過載 1.函式過載回顧 函式過載的本質為相互獨立的不同函式 C++中通過函式名和函式引數確定函式呼叫 無法直接通過函式名得到過載函式的入口地址 函式過載
C++筆記 第三十六課 經典問題解析三---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第三十六課 經典問題解析三 1.關於賦值的疑問 什麼時候需要過載賦值操作符?編譯器是否提供預設的賦值操作? 編譯器為每個類預設過載了賦值操作符 預設的賦值操作符僅完成淺拷貝
C++筆記 第三十四課 陣列操作符的過載---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第三十四課 陣列操作符的過載 1.問題 string類物件還具備C方式字串的靈活性嗎?還能直接訪問單個字元嗎? 絕對支援陣列直接訪問單個字元,使用操作符過載函式進行就可以
C++筆記 第三十一課 完善的複數類---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第三十一課 完善的複數類 1.完善的複數類 複數類應該具有的操作 運算:+,-,*,/ 比較:==,!= 賦值:= 求模:modulus 利用操作符過載 統一複數與實數的運算
C++筆記 第三十九課 逗號操作符的分析---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第三十九課 逗號操作符的分析 1.逗號操作符 逗號操作符(,)可以構成逗號表示式 逗號表示式用於將多個子表示式連線為一個表示式 逗號表示式的值為最後一個子表示式的值 逗號表示
C++筆記 第五十五課 經典問題解析四---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第五十五課 經典問題解析四 1.關於動態記憶體分配 new和malloc的區別是什麼? delete和free的區別是什麼? new關鍵字與malloc函式的區別 new關鍵
C++筆記 第四十七課 父子間的衝突---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第四十七課 父子間的衝突 1.思考 子類中是否可以定義父類中的同名成員?如果可以,如何區分?如果不可以,為什麼? 47-1 同名成員變數 #include<io