C 中類模板與友元

2021-10-22 18:24:44 字數 697 閱讀 5417

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

全域性函式的類內實現-----直接在類內生命友元即可

全域性函式的類外實現-----需要提前讓編譯器知道全域性函式的存在

#include using namespace std;

#include//通過全域性函式來列印person的資訊

//提前讓編譯器知道person類存在

templateclass person;

//類外實現

templatevoid printperson2(personp)

templateclass person

//全域性函式的類外實現

//加空模板的引數列表

//如果全域性函式是類外的話,需要讓編譯器提前知道這個函式的存在

friend void printperson2<>(personp);

public:

person(t1 name, t2 age)

private:

t1 m_name;

t2 m_age;

};//1.全域性函式在類內實現

void test01()

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

void test02()

int main()

建議:建議全域性函式做類模板內實現,用法簡單,而且編譯可以直接識別。

友元與模板類

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

16 2 8 類模板與友元

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

C 提高9 類模板與友元

掌握類模板配合友元函式的類內和類外實現 先來乙個類內實現的例子 include include using namespace std template classt1,class t2 class person public person t1 name,t2 age 令成員私有化 private...