1.1修飾成員函式
用const修飾的成員函式時,const修飾this指標指向的記憶體區域,成員函式體內不可以修改本類中的任何普通成員變數, 當成員變數型別符前用mutable修飾時例外。
int
myfun
(void
)const
//const修飾的是成員函式
//函式內部不能修改普通成員變數 mutable修飾時例外
1.2、const修飾物件叫常物件
const int num = 10;//系統不會給num開闢空間 num被放入符號表中 如果後期對&num 這時系統才會給num開闢空間
c++允許 友元 訪問 私有資料。
友元的語法:
friend關鍵字只出現在宣告處 其他類、類成員函式、全域性函式都可宣告為友元 友元函式不是類的成員,不帶this指標 友元函式可訪問物件任意成員屬性,包括私有屬性。
2.1、普通全域性函式作為類的有元
class
room};
// 普通全域性函式 作為 類的友元
//好** 訪問 我的房間
void
goodgayvisit
(room &room)
void
test01()
2.2、類的某個成員函式 作為另乙個類的友元
#include
using
namespace std;
class
room
;//room向前宣告
class
goodgay
;class
room};
void goodgay::
visit1
(room &room)
void goodgay::
visit2
(room &room)
intmain
(int argc,
char
*ar**)
2.3、乙個類整體作為另乙個類的友元
乙個類的所有成員函式 訪問 另乙個類的私有資料
#include
using
namespace std;
class
room
;//room向前宣告
class
goodgay
;class
room};
void goodgay::
visit1
(room &room)
void goodgay::
visit2
(room &room)
intmain
(int argc,
char
*ar**)
3.1、過載運算子的概述
運算子過載,就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別
運算子過載的目的:簡化操作 讓已有的運算子 適應適應不同的資料型別。
語法:函式的名字由關鍵字operator及其緊跟的運算子組成
比如:過載+運算子 ==>operator+ 過載=號運算 ==>operator=
注意:過載運算子 不要更改 運算子的本質操作(+是資料的相加 不要過載成相減)
3.2、運算子《的過載
#include
#include
using
namespace std;
class
person
//普通的成員函式
void
printperson
(void)~
person()
cout<<
"析構函式"
<;ostream&
operator
<<
(ostream &out, person &ob)
//out=cout, ob =ob1
intmain
(int argc,
char
*ar**)
3.3、過載+運算子:全域性函式作為友元,完成運算子過載+
#include
#include
using
namespace std;
class
person
person
(char
*name,
int num)
//成員函式 完成運算子過載 ob1用this代替 ob2用引數ob代替
person operator
+(person &ob)
return tmp;
}//普通的成員函式
void
printperson
(void)~
person()
cout<<
"析構函式"
<;//全域性函式作為友元 完成運算子過載<<
ostream&
operator
<<
(ostream &out, person &ob)
//out=cout, ob =ob1
void
test03()
intmain
(int argc,
char
*ar**)
小白學習,c 基礎(四)
巨集函式 帶引數 的缺點 第乙個在c中也會出現,巨集看起來像乙個函式呼叫,但是會有隱藏一些難以發現的錯誤。第二個問題是c 特有的,預處理器不允許訪問類的成員,也就是說預處理器巨集不能用作類的成員函式 內聯函式 內聯函式為了繼承巨集函式的效率,沒有函式呼叫時開銷,然後又可以像普通函式那樣,可以進行引數...
小白學習,c 基礎(五)
1 類的空間大小 using namespace std class data intgetnum void void test01 2 成員函式,在類內宣告,類外定義 include using namespace std class data data類的成員函式 void data setnu...
C 基礎學習(七) 多型
2 多型原理解析 3 抽象類 和 純虛函式 4 虛析構和純虛析構 5 向上型別轉換和向下型別轉換 1.1.1 靜態多型 1.1.2 動態多型 1.2.1 位址早繫結 編譯階段繫結好位址 1.3.1 位址晚繫結 父類的引用或指標指向子類物件 includeusing namespace std cla...