模板类中含有友元函数的书写规范

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Legends_Never_Die/article/details/82928259
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关键字)

猜你喜欢

转载自blog.csdn.net/Legends_Never_Die/article/details/82928259