#include
using
namespace std;
class
coordinate
;coordinate::
coordinate
(int x,
int y)
void
printxy
(coordinate &c)
intmain()
class
circle
;class
coordinate
;class
circle
private
: coordinate m_coor;
};在這裡插入**片
友元關係不可傳遞;
友元關係具有單向性;
友元宣告的形式和數量不受限制;
友元只是封裝的補充,設計巧妙可以避開就更好,不然會暴露資料。
#include
using
namespace std;
class
tank
~tank()
static
intgetcount()
static
int s_icount;
private
: string m_strcode;};
int tank::s_icount =0;
intmain()
靜態的成員函式只能操作靜態資料。
因為靜態是隨類存在,編譯的。
靜態資料成員必須單獨 初始化。
靜態資料成員只有乙份,且不依賴物件而存在,求乙個物件的大小時是不包含靜態資料的。
本質:函式過載
關鍵字:operator
一元運算子的過載
-負號的過載:
成員函式的過載:
#include
using
namespace std;
class
coordinate
;coordinate::
coordinate
(int x,
int y)
coordinate& coordinate::
operator-(
)int
main()
友元函式過載:
#include
using
namespace std;
class
coordinate
;coordinate::
coordinate
(int x,
int y)
coordinate operator
-(coordinate &coor)
intmain()
後置++過載
#include
using
namespace std;
class
coordinate
;coordinate::
coordinate
(int x,
int y)
coordinate coordinate::
operator++(
int)
intmain()
《運算子過載
#include
using
namespace std;
class
coordinate
;coordinate::
coordinate
(int x,
int y)
ostream&
operator
<<
(ostream &out,
const coordinate &coor)
intmain()
#include
using
namespace std;
template
<
class
t>
t maxx
(t a,t b)
intmain()
變數作為函式模板
template
<
int size>
void
display()
intmain()
多引數函式模板
template
<
typename t,
typename c>
void
display
(t a, c b)
intmain()
typename和class可以混用。
模板**暫時不能分離編譯。
得將所有**都寫在**件裡。
C 複習之函式模板
模板的意義 對型別也可以進行引數化 函式模板 把處理不同型別的公共邏輯抽象成函式,就得到了函式模板。不進行編譯,因為型別不知道 模板的例項化 函式呼叫點進行例項化,會生成乙個真正的函式 模板函式 由函式模板例項化出來的函式,需要被編譯器所編譯 模板的實參推演 可以根據使用者傳入的實參型別,來推導出模...
C 模板複習參考筆記
型別引數化 template 返回型別 函式名 引數列表 這裡的返回型別,引數列表的形參型別 可以寫成你在尖括號 裡規定的形參類名,如t,如下 template t min t a,m b 如果你要定義模板成員方法,1.因為它是乙個成員方法 寫外邊,加類名和作用域符 2.因為它是乙個模板方法 配合t...
複習C (十九)函式模板
函式模板是通用的函式描述,它們使用泛型來定義函式,其中泛型可用具體的型別替換。通過將型別作為引數傳遞給模板,可使編譯器生成該型別的函式。這有時也被稱為通用程式設計。template typename anytype void swap anytype a,anytype b 關鍵字template和...