const修飾成員函式
友元在乙個類中,若將乙個成員變數宣告為static,這種成員稱為靜態成員變數,與一般的資料成員不同,無論建立了多少個物件,都只有乙個靜態資料的拷貝 ,靜態成員變數,屬於某個類,所有物件共享 。
靜態變數,在編譯階段就分配空間,物件還沒有建立時,就已經分配空間 。
- 靜態成員變數必須在類中宣告,在類外定義
- 靜態資料成員不屬於某個物件,在為物件分配空間中不包括靜態成員所佔空間。
- 靜態資料成員可以通過類名或者物件名來引用
在乙個類中,若將乙個成員變數宣告為static,這種成員稱為靜態成員變數,與一般的資料成員不同,無論建立了多少個物件,都只有乙個靜態資料的拷貝 ,靜態成員變數,屬於某個類,所有物件共享 。
靜態變數,在編譯階段就分配空間,物件還沒有建立時,就已經分配空間 。
- 靜態成員變數必須在類中宣告,在類外定義
- 靜態資料成員不屬於某個物件,在為物件分配空間中不包括靜態成員所佔空間。
- 靜態資料成員可以通過類名或者物件名來引用
目的:為了 讓類中只有乙個例項,例項也不需要自己釋放
1.將預設構造和拷貝構造私有化
2.內部衛華乙個物件指標。
3.私有化唯一指標
4.對外提供 getinstance方法來訪問這個指標。
//建立主席類
//需求 單例模式 為了建立類中的物件,並且保證只有乙個物件例項
class chairman
//拷貝構造 私有化
chairman
(const chairman&c)
public:
//提供 get方法 訪問 主席
static chairman*
getinstance()
private:
static chairman * singleman;};
chairman * chairman:
:singleman = new chairman;
void
test01()
else
/*chairman * cm3 = new chairman(*cm2);
if (cm3 == cm2)
else
*/}
示例:pandas 是基於numpy 的一種工具,該工具是為了解決資料分析任務而建立的。
c++中的非靜態資料成員 直接內含在物件中,就想c struct一樣
成員函式雖然內含在class宣告內 ,卻不出現在物件中。
每乙個非內聯成員函式只會誕生乙份函式例項,成員函式和成員變數分開儲存
//#pragma pack(1) 修改為1位元組對齊
void
test01()
class person
;//非靜態成員函式 不屬於物件身上
static
int m_b;
//靜態成員變數 ,不屬於物件身上
static
void
func2()
;//靜態成員函式 ,不屬於物件身上
double m_c;
// 12 錯誤 16正確
};
p1.func()
p2.func()
func怎麼知道自己被哪乙個物件呼叫。
c++提供特殊的物件指標,this指標,this指標指向被呼叫的成員函式所屬的物件
this可以解決命名衝突
// this可以解決命名衝突
class person
//對比年齡
void
compareage
( person & p)
else
}//年齡相加
person&
plusage
(person & p)
int age;};
void
test01()
class person
void
showage()
cout << this->m_age << endl;
// null -> m_age
}int m_age;
// }
;void
test01()
class person
void
showinfo()
const
//常函式 不允許修改指標指向的值
void
show2()
const
int m_a;
mutable int m_b;
//就算是常函式 我還是執意要修改};
void
test01()
全域性函式做友元函式
class building
//客廳 臥室
public:
string m_sittingroom;
//客廳
private:
string m_bedroom;
//臥室};
//全域性函式 好**
void
goodgay
( building * building )
//友元函式 目的訪問類中的私有成員屬性
void
test01()
2.整個類做友元類
3.成員函式做友元函式
class building;
class goodgay
;class building
;goodgay:
:goodgay()
void goodgay:
:visit()
building:
:building()
void
test01()
友元類是單向的,不可傳遞的 。
小白學習,c 基礎(四)
巨集函式 帶引數 的缺點 第乙個在c中也會出現,巨集看起來像乙個函式呼叫,但是會有隱藏一些難以發現的錯誤。第二個問題是c 特有的,預處理器不允許訪問類的成員,也就是說預處理器巨集不能用作類的成員函式 內聯函式 內聯函式為了繼承巨集函式的效率,沒有函式呼叫時開銷,然後又可以像普通函式那樣,可以進行引數...
C 基礎學習第四天
c 的基本 型別分為兩組 一組由儲存為整數的值組成,另一組由儲存為浮點數的值組成。整型之間通過儲存值時使用的記憶體量和有無符號來區分。整型從最小到最大依次是 bool,char,signed char,unsigned char,short,unsigned short,int,unsigned i...
Linux基礎學習(四)
自建yum倉庫,分別為網路源和本地源 編譯安裝http2.4,實現可以正常訪問,並將編譯步驟和結果提交。利用sed 取出ifconfig命令中本機的ipv4位址 ip addr show eth0 sed nr 3s 0 9 0 9.1 p 刪除 etc fstab檔案中所有以 開頭,後面至少跟乙個...