類模板中出現3種友元宣告,每一種友元宣告了與乙個或者多個實體的友元關係
(1)普通非模板類或函式的友元宣告,將友元關係授予明確指定的類或函式。
(2)類模板或函式模板的友元宣告,授予對友元所有例項的訪問權。
(3)只授予對類模板或函式模板的特定例項的訪問權的友元宣告。
1 普通友元
非模板類或非模板函式可以是類模板的友元。
#include using namespace std;
template class bar
};class foobar
};template class foobar
一般模板友元關係:foobar的任意例項都可以訪問bar的任意例項的私有成員。fun函式相同。
3 特定的模版友元
除了將乙個模版的例項設為友元,類也可以只授予對特定例項的訪問權。
#include using namespace std;
//模版宣告
template class bar;
template class foobar;
template void fun(const bar&);
template class bar
};template class foobar
c 學習筆記之類模板中的友元宣告
類模板中出現3種友元宣告,每一種友元宣告了與乙個或者多個實體的友元關係 1 普通非模板類或函式的友元宣告,將友元關係授予明確指定的類或函式。2 類模板或函式模板的友元宣告,授予對友元所有例項的訪問權。3 只授予對類模板或函式模板的特定例項的訪問權的友元宣告。1 普通友元 非模板類或非模板函式可以是類...
c 模板學習11之類模板與友元
include include using namespace std 提前讓編譯器知道person類存在 template classt1,class t2 class person 2.全域性函式在類外實現 template classt1,class t2 void printperson1 ...
類模板中的友元宣告
有三種友元宣告可以出現在類模板中 1 非模板友元類或友元函式。在下面的例子中,函式foo 成員函式bar 以及foobar類都是類模板queueitem的所有例項的友元。class foo templateclass queueitem 上面的例子中,注意第三條,在queueitem類把foo類的乙...