1. 程式人生 > >模板類中含有友元函式的書寫規範

模板類中含有友元函式的書寫規範

template <class T> class person;  //模板類的宣告
template <class T>
void show1(person<T>& );   //友元函式的宣告
template <class T>
class person
{
public:
    T age;
    T g;
public:
    person(T a,T b)
    {
        age=a;
        g=b;
    }

    friend void show1<T>(person<T> &k);  //友元函式類內宣告時在函式名後加上<T>
    void show()
    {
        cout<<age<<" "<<this->g<<endl;
    }
};
template <class T>
void show1(person<T>& k)
{
    cout<<k.age<<endl;
}
int main()
{
    person<int>p(1,2);
    p.show();
    show1(p);
    return 0;
}

友元函式不是類的成員函式,它的定義必須在類外實現(實現時不加friend關鍵字)