const 與函式 — 傳參
常成員函式
用const修飾的函式,在宣告和定義時都要加const
const
intgetage()
const
;//類中的宣告
const
int person:
:getage()
const
//類外的定義
常資料成員常物件 用const修飾的物件只能呼叫const成員函式
注:只有常成員函式才有資格操作常量或常物件,沒有const關鍵字說明的函式不能用來操作常物件
(常成員函式的this指標是乙個指向指向常量的指標 —> const time *;普通的成員函式的this指標指向普通物件的指標 —> time *若為const time *則型別不匹配,即常物件不能呼叫普通成員函式)
const 的例外 – mutable
把常函式中隱含的this指標強制轉換為非const。友元函式:在類中定義資料成員時使用mutable
友元類:
友元關係注意事項:
單目運算子: ++ –過載的方法:雙目運算子:+ - * / +=
三目運算子: ? :
友元函式
成員函式
友元函式: 對稱的操作符,如算術運算、關係操作符、位操作符。(雙目)
成員函式:
1. = () ->等必須定義為成員(+=不是必須)。
2.改變物件狀態或與給定型別密切聯絡的其他運算子,如自增、自減。
成員函式:形參看起來比運算元數目少1;a++ 與++a過載:使用者在a++中多加乙個int引數讓編譯器區分
friend time& operator++
(time& t)
;//++a 友元函式
friend time operator++
(time& t,
int num)
;//a++ 友元函式
time& time:
:operator++()
;//++a 成員函式
time time:
:operator++
(int);
//a++ 成員函式
time t1 = t++
;time t1 =
++t;
加號 + 過載
friend time operator+
(const time& t1,
const time& t2)
;//c = a + b 友元函式
time time:
:operator+
(const time& t2)
const
;//a += b 成員函式
time t = t1 + t2;
加等於號 += 過載
friend time& operator+
=(time& t1,
const time& t2)
;//a += b 友元函式
time& time:
:operator+=(
const time& t2)
;//a += b 成員函式
time t = t1 +
= t2;
//t1 = t1 + t2 ; t = t1;
大於號 > 過載
friend bool operator>
(const time &t1,
const time &t2)
;bool time:
:operator>
(const time &t2)
const
;t1 > t2>(t2);
資料流 - 輸出流 << 輸入流 >> 過載
ostream& operator<<
(ostream& os,time& t)
;//只有成員函式
istream& operator>>
(istream& is,time& t)
;time ttt;
cin >> ttt;
cout << ttt << endl;
過載的注意事項:
警告: 不要濫用運算子過載
C 中的 友元函式 友元類
1.友元函式的簡單介紹 1.1為什麼要使用友元函式 在實現類之間資料共享時,減少系統開銷,提高效率。如果類a中的函式要訪問類b中的成員 例如 智慧型指標類的實現 那麼類a中該函式要是類b的友元函式。具體來說 為了 使其他類的成員函式直接訪問該類的私有變數。即 允許外面的類或函式去訪問類的私有變數和保...
C 學習 類中的友元函式
如果類有一套完整的取值函式,可以利用取值函式定義乙個普通函式來測試相等性或其他依賴私有成員變數的計算。這樣雖然能間接訪問私有成員變數但效率堪憂。類的友元函式不是這個類的成員函式,而是乙個 友好 的函式,他能像成員函式那樣訪問類的私有成員。在類定義中宣告友元函式只需在函式宣告前新增關鍵字friend,...
C 友元函式和友元類學習
c 中的友元為封裝隱藏這堵不透明的牆開了乙個小孔,外界可以通過這個小孔窺視內部的秘密。友元的正確使用能提高程式的執行效率,但同時也破壞了類的封裝性和資料的隱藏性,導致程式可維護性變差。友元函式需要在類的定義中加以宣告,宣告時只需在友元的名稱前加上關鍵字friend,其格式如下 friend 型別 函...