C 提高9 類模板與友元

2021-10-05 02:36:16 字數 1298 閱讀 9402

掌握類模板配合友元函式的類內和類外實現

先來乙個類內實現的例子:

#include

#include

using

namespace std;

template

<

classt1,

class

t2>

class

person

public

:person

(t1 name, t2 age)

//令成員私有化

private

: t1 m_name;

t2 m_age;};

void

test01()

intmain()

類外實現看一下

#include

#include

using

namespace std;

//2、全域性函式配合友元 類外實現 - 先做函式模板宣告,下方在做函式模板定義,在做友元

template

<

classt1,

class

t2>

class

person

;//如果宣告了函式模板,可以將實現寫到後面,否則需要將實現體寫到類的前面讓編譯器提前看到

//templatevoid printperson2(person& p);

template

<

classt1,

class

t2>

void

printperson2

(person

& p)

template

<

classt1,

class

t2>

class

person

//全域性函式配合友元 類外實現

friend

void printperson2<

>

(person

& p)

;public

:person

(t1 name, t2 age)

private

: t1 m_name;

t2 m_age;};

//1、全域性函式在類內實現

void

test01()

//2、全域性函式在類外實現

void

test02()

intmain()

友元與模板類

友元成員函式模板 include using namespace std templateclass a 當用到友元成員函式時,需注意友元宣告與友元定義之間的互相依賴。這是類a的宣告 templateclass b template a的這個t決定了對於b的t型別友元,並且只友元a型別 class ...

C 中類模板與友元

類模板配合友元函式的類內和類外實現 全域性函式的類內實現 直接在類內生命友元即可 全域性函式的類外實現 需要提前讓編譯器知道全域性函式的存在 include using namespace std include 通過全域性函式來列印person的資訊 提前讓編譯器知道person類存在 templ...

16 2 8 類模板與友元

這裡為了測試友元函式,所以將person類的屬性設定為私有。1 全域性函式類內實現 這裡有乙個全域性函式做友元,用來輸出person的資訊。include include using namespace std template classt1,class t2 class person publi...