本片部落格是作者在學習c++的過程中的筆記記錄,希望和各位讀者一起學習交流
靜態成員變數
定義靜態成員變數
關鍵字static可以用於說明乙個類的成員,靜態成員提供了乙個同類物件的共享機制
把乙個類的成員說明為static時,這個類無論有多少個物件被建立,這些物件共享這個static成員
靜態成員屬於類,它不是物件成員
用法:
使用靜態成員變數
當靜態成員變數是public屬性的時候,可以使用類名或者物件來直接呼叫,類呼叫的時候時要用「::」來呼叫,物件呼叫的時候要用「.」來呼叫
當靜態成員變數是private屬性的時候,只能通過物件呼叫相應的成員函式來使用
靜態成員函式
概念靜態成員函式用關鍵字staic進行修飾
在類外呼叫靜態成員函式的時候,用「類名::」做限定詞或者通過物件進行呼叫
在靜態成員函式中能使用靜態成員變數,但是不能使用普通成員變數。
原因:如果在靜態成員函式中使用普通變數的話,那樣就不能確定這個普通變數屬於哪個物件,因此會發生錯誤
c++物件模型可以概括為兩部分:
語言中直接支援物件導向程式設計的部分,主要涉及如建構函式、析構函式、虛函式、繼承(單繼承、多繼承、虛繼承)、多型等。
對於各種支援的底層實現機制
在c語言中,「資料」和「處理資料的操作(函式)」是分開來宣告的,也就是說,語言本身並沒有支援「資料和函式」之間的關聯性。在c++中,通過抽象資料型別(abstract data type,adt),在類中定義資料和函式,來實現資料和函式的繫結
概括的說,c++類中有兩種成員資料:static、nonstatic;三種成員函式:static、nonstaitc、virtual
編譯器對屬性和方法的處理機制
c++類中的成員變數和成員函式是分開儲存的
成員變數:
普通成員變數:儲存於物件中,與struct變數有相同的記憶體布局和位元組對齊方式
靜態成員函式:儲存於全域性資料區中
成員函式:
儲存於**段中
總結:c++類物件中的成員變數和成員函式是分開儲存的
c++中類的普通成員函式都隱式包含乙個指向當前物件的this指標
靜態成員函式不包括指向具體物件的指標,普通成員函式包括乙個指向具體物件的指標
this指標
this指標是指向物件自己本身的乙個指標
若方法的形參的名字和物件的屬性的名字相同,則通過this指標來解決
const的修飾
eg:class test
private:
int m_a;
};這裡的const修飾的是this指標指向的記憶體空間,表示this指標指向的記憶體空間不能進行修改,this指標本省就是不可以進行修改的,因為this指標的型別是:test * const ,說明this指標是乙個常指標。
全域性函式pk成員函式
全域性函式轉化成成員函式,通過this指標隱藏左運算元
test add(test &t1,test &t2)===》 test add(test &t2)
成員函式轉換成全域性函式,多乙個引數
void print()===》void add(test *pthis)
函式返回元素和返回引用
函式返回引用是返回物件本身,即*this
test &add(test &t2);
返回返回元素是返回乙個匿名物件
test add(test &t2);
友元函式(破壞了類的封裝性)
類中通過使用關鍵字friend 來修飾友元函式,但該函式並不是類的成員函式,其宣告可以放在類的私有部分,也可放在共有部分。友元函式的定義在類體外實現,不需要加類限定
乙個類中的成員函式可以是另外乙個類的友元函式,而且乙個函式可以是多個類友元函式
友元函式可以訪問類中的私有成員和其他資料,但是訪問不可直接使用資料成員,需要通過對物件進行引用
友元函式在呼叫上同一般函式一樣,不必通過對物件進行引用
格式:friend 型別 函式名(形式引數);
友元類
友元類的所有成員函式都是另乙個類的友元函式,都可以訪問另乙個類中的隱藏資訊(包括私有成員和保護成員)
當希望乙個類可以訪問另乙個類的私有成員時,可以將該類宣告為另一類的友元類
格式:friend class 類名;
pyhton基礎知識學習第四天
表示式是值,變數和操作符 或叫運算子 的組合。單獨的乙個值是乙個表示式,單獨的變數也是乙個表示式。python語句是一段可執行 常見的有賦值語句,if語句,while語句,for語句等等。賦值賦值的特性 變數名在首次賦值時會被建立,變數名在引用前必須先賦值 序列賦值 在上面的例子中,寫了兩個元組,只...
python第四天 基礎知識
start 計數從 start 開始。預設是從 0 開始。例如range 5 等價於range 0,5 stop 計數到 stop 結束,但不包括 stop。例如 range 0,5 是 0,1,2,3,4 沒有5 step 步長,預設為1。例如 range 0,5 等價於 range 0,5,1 ...
C 基礎學習第四天
c 的基本 型別分為兩組 一組由儲存為整數的值組成,另一組由儲存為浮點數的值組成。整型之間通過儲存值時使用的記憶體量和有無符號來區分。整型從最小到最大依次是 bool,char,signed char,unsigned char,short,unsigned short,int,unsigned i...