系统版本:Ubuntu 14.04_64
编译工具:g++
最后更新:2022-07-01
0x01 代码实现类模板的类外实现以及在模板类中使用友元函数可以从以下代码中参考学习,具体讲解教程可以参看文章最后的链接:
#includeusing namespace std; template class Person; template void PrintPerson(Person & p); template ostream& operator<<(ostream& os, Person & p); template class Person{ public: //重载 friend ostream& operator<< (ostream& os, Person & p); //普通友元函数 friend void PrintPerson (Person & p); Person(T age, T id); void Show(); private: T mAge; T mID; }; template Person ::Person(T age, T id){ this->mAge = age; this->mID = id; } template void Person ::Show(){ cout << "Age:" << mAge << "ID:" << mID << endl; } template ostream& operator<<(ostream& os, Person & p){ os << "Age:" << p.mAge << "ID:" << p.mID << endl; return os; } template void PrintPerson(Person & p){ cout << "Age:" << p.mAge << "ID:" << p.mID << endl; } void test(){ Person p(10, 11); //p.Show(); cout << p; //PrintPerson(p); } int main(){ test(); return 0; }
编译运行结果:
Age:10ID:11
以上。
参考文档:
1.https://www.bilibili.com/video/BV1jt411274J?p=12&spm_id_from=pageDriver&vd_source=400083cd545d1a00e016c8759f136df3
2.https://www.bilibili.com/video/BV1jt411274J?p=13&spm_id_from=pageDriver&vd_source=400083cd545d1a00e016c8759f136df3



