16 2 8 類模板與友元

2021-10-08 06:39:07 字數 1198 閱讀 5708

這裡為了測試友元函式,所以將person類的屬性設定為私有。

1、全域性函式類內實現

這裡有乙個全域性函式做友元,用來輸出person的資訊。

#include

#include

using

namespace std;

template

<

classt1,

class

t2>

class

person

public

:person

(t1 name, t2 age)

private

: t1 name;

t2 age;

};

下面來呼叫一下試試:

2、全域性函式類外實現

這裡友元函式只在類內宣告。

但全域性函式的實現要在宣告之前,但實現時用到了person類,此時類還沒定義,所以再前面要先宣告person類。

#include

#include

using

namespace std;

template

<

classt1,

class

t2>

class

person

;template

<

classt1,

class

t2>

void

printperson

(person

& p)

template

<

classt1,

class

t2>

class

person

private

: t1 name;

t2 age;

};

下面來呼叫一下試試:

友元與模板類

友元成員函式模板 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...

模板類和友元

懶得抄了,直接截圖,後面對模板類友元函式是單個類具體化的友元,還有模板類所有具體化的友元進行自己理解的總結。總結 1.模板類的非模版友元函式 友元函式與 t無關時,友元和類的例項化是一對多的關係。即這個友元函式是所有類例項化的友元,可以訪問所有類裡面的成員物件。友元函式與 t有關時,比如包含t的引數...