掌握類模板配合友元函式的類內和類外實現
先來乙個類內實現的例子:
#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...