模板類中的友元函式寫法

2021-06-23 01:45:46 字數 1030 閱讀 4725

1.友元函式在類的定義體中實現。

using namespace std;

template class queue

private:

size_t length;

};//#include "queue.cpp"

#endif //_queue_h_

2. 友元函式在類中宣告在cpp檔案中實現

#ifndef _queue_h_

#define _queue_h_

#include using namespace std;

template class queue

private:

size_t length;

};//#include "queue.cpp"

#endif //_queue_h_

template

ostream& operator<<(std::ostream& out, const queue& que)   //注意《之後沒有

3. 對於非型別形參也是如此。

#ifndef _screen_h_

#define _screen_h_

#include #include using namespace std;

template < int hi, int wid>

class screen

;#endif //_screen_h_

templateistream& operator>> (istream& is, screen& scr)  //注意,<< 後面不用加,否則報錯

templateostream& operator<< (ostream& out, const screen& scr) //注意,<< 後面不用加,否則報錯

模板類中的友元函式

模板類中友元函式不要濫用,最好只用來過載左移和右移運算子 和 如果用於普通友元函式過載,會非常麻煩,即使類模板定義和宣告分開,也建議都寫在.h或.hpp檔案中,即要保證模板類的定義和宣告在乙個檔案中,否則,將不能找到函式的定義,這和模板的二次編譯有關。參見官方的stl庫風格可知,它也遵循這一原則,即...

模板類的 友元模板函式

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 c...

模板類的 友元模板函式

模板類的 友元模板函式 第二名 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...