這裡為了測試友元函式,所以將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的引數...