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
using
namespace
std;
template
<
class
t>
class
test;
template
<
class
t> ostream& operator<<(ostream& out,
const
test&obj);
template
<
class
t>
class
test
test(
const
test ©)
//'<<'後面加上'<>'表明這個函式是個函式模板
friend
ostream& operator<< <>(ostream& out,
const
test&obj);
};
template
<
class
t> ostream& operator<<(ostream& out,
const
test&obj)
int
main()
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...