模板類的 友元模板函式

2021-06-25 14:28:52 字數 2241 閱讀 7358

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

#include

#include

usingnamespacestd;

template<classt>classtest;

template<classt> ostream& operator<<(ostream& out,consttest&obj);

template<classt>classtest

test(consttest ©)

//'<<'後面加上'<>'表明這個函式是個函式模板

friendostream& operator<< <>(ostream& out,consttest&obj);

};

template<classt> ostream& operator<<(ostream& out,consttest&obj)

intmain()

1)需要注意的是,template究竟**應該出現,**不應該出現。

2)需要重點注意的是新增注釋的行,

1:  

friend

ostream& operator

<< <>(ostream& out, const

test

&obj);

此行不可也寫成,

1:  

friend template

t> ostream& operator

<< <>(ostream& out, const

test

&obj);

寫成這樣也不可,

1:  

friend template

t> ostream& operator

<<(ostream& out, const

test

&obj);

總之,唯一正確的寫法就是**段中的寫法。<>也必不可少,其實<>有兩重意思,一是,表明此友元函式是函式模板;二是,此模板使用的模板型別引數為當前模板類的型別引數class t。

模板類的 友元模板函式

模板類的 友元模板函式 第二名 12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 include include usingnamespacestd te...

類模板的模板友元函式定義

類模板的模板友元函式定義有2種方式 1.將友元模板函式直接定義在類模板中。這種方式比較簡單直接。2.將友元模板函式宣告在類模板中,定義在類模板之外。這種方式的寫法,如果不小心,通常會出現編譯沒問題,鏈結時無法解析的錯誤。以下是乙個簡單的正確的例子 1 include 2 include 3 4 te...

模板類和友元函式

ifndef mytest h included define mytest h included include template void counts template void result type1 template 成員函式的定義前面才需要加 class hasfriends hasf...