友元函式是可以直接訪問類的私有成員的非成員函式
友元的作用雖減少時間開銷,但它破壞了類的封裝性和隱藏性
友元關係不能被繼承,友元關係是單向的,不具有交換性,友元關係不具有傳遞性
classa;class
b;
自己寫的標頭檔案,必須加.h。
標準的c++標頭檔案沒有.h副檔名
iostream是c++的標頭檔案,iostream.h是c的標頭檔案
iostream.h裡面定義的所有類以及物件都是在全域性空間裡,可以直用cout
在iostream裡面,它所定義的東西都在名字空間std裡,必須加上 using namespace std才能用cout
有特殊的,c的標準庫有乙個名字叫做「string.h」的標頭檔案,包含一些常用的c字串處理函式
這個標頭檔案跟c++的string類半點關係也沒有,他們的功能是不同的
當物件對成員進行多次呼叫時,不能使用匿名物件,必須給物件起名字。
成員有兩種 1.成員變數: 事物的屬性。
2.成員函式: 事物的行為。
必須先要對事物進行屬性和行為的分析,才可以用**來體現。
不需要對外提供的內容都隱藏起來,把屬性都隱藏,提供公共方法對其訪問。
私有僅僅是封裝的一種體現形式
類中的屬性通常被私有化,並對外提供公共的訪問方法。
只能通過本類對外提供具體的訪問方式來完成對私有的訪問
可以通過對外提供函式的形式對其進行訪問。
存在於堆記憶體中,隨著物件的產生而存在,消失而消失。
區域性變數只在自己所屬的大括號內有效,大括號結束,區域性變數失去作用域。
存在於棧記憶體中,隨著所屬區域的執行而存在,結束而釋放。
只要物件一建立。就會呼叫這個**塊。
person p = new person();
1.指定位置的person.class檔案載入進記憶體。
2.執行main方法時,在棧記憶體中開闢main方法的空間,在main方法的棧區分配了乙個變數p。
3.在堆記憶體中開闢乙個實體空間,分配乙個記憶體首位址值。 new
4.在該實體空間中進行屬性的空間分配,並進行了預設初始化。
5.對空間中的屬性進行顯示初始化。
6.進行實體的構造**塊初始化。
7.呼叫該實體對應的建構函式,進行建構函式初始化。()
8.將首位址賦值給p ,p變數就引用了該實體。(指向了該物件)
功能內部使用到呼叫該功能的物件,用this來表示這個物件。
實現物件中的共性資料的物件共享。可以將這個資料進行靜態修飾。
被靜態修飾的成員,可以直接被類名所呼叫 , 格式: 類名.靜態方式。
靜態隨著類的載入而載入。而且優先於物件存在。
靜態方法只能訪問靜態成員,不可以訪問非靜態成員。 非靜態成員函式中可以呼叫靜態成員。
定義靜態,要明確該資料是否是被物件所共享的。
主函式是靜態的。
2.成員函式 (方法中沒有呼叫特有資料時,應定義成靜態)
1. 成員變數 物件,例項變數,存在於堆記憶體
隨著物件建立而存在, 隨著物件被**而消失
只能被物件所呼叫 物件的特有資料
2.靜態變數 類, 類變數 , 存在於方法區
隨著類的載入而存在,隨著類的消失而消失
可以被物件呼叫,也可以被類名呼叫
物件的共享資料 ,生命週期很長。
隨著類的載入執行,只執行一次(new 多個物件就只執行一次)
若和主函式在同一類中,優先於主函式執行。
靜態**塊、構造**塊、建構函式同時存在時的執行順序:靜態**塊 ->構造**塊->建構函式;
主函式的存在,僅為該類是否需要獨立執行,若不需要,主函式不用定義
C 之菜鳥入門概念C
若多程式讀取乙個配置檔案,建議配置檔案封裝成物件。方便操作其中資料,需要該配置檔案物件在記憶體中是唯一的。2.在本類中建立乙個本類物件。3.對外提供方法,讓其他程式獲取這個物件。步驟1.建立物件都需要建構函式初始化,只要將本類中的建構函式私有化,其他程式就無法再建立該類物件 2.就在類中建立乙個本類...
c 入門 菜鳥學習日記
c 包含了整個c,c是建立c 的基礎。c 包括c的全部特徵 屬性和優點,同時新增了物件導向程式設計 oop 的完全支援。c 語言包括過程性語言部分和類部分。過程性語言部分與c並無本質的差別,類部分是c中所沒有的,它是物件導向程式設計的主體。物件導向程式設計的本質是把資料和處理資料的過程當成乙個整體 ...
C語言菜鳥入門系列
使用c語言中的clock 函式來比較程式的執行速度 多項式求和 i 0na i xi i 0na i xi 普通的多項式求和演算法和秦九章演算法程式比較 由於函式執行一次的速度非常快,這裡可以重複執行多次函式達到時間雷擊的效果。double coff double x 4 start clock 多...