栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C++】类模板类外实现及模板类中使用友元函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C++】类模板类外实现及模板类中使用友元函数

0x00 前言

系统版本:Ubuntu 14.04_64

编译工具:g++

最后更新:2022-07-01

0x01 代码实现

类模板的类外实现以及在模板类中使用友元函数可以从以下代码中参考学习,具体讲解教程可以参看文章最后的链接:

#include
using 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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1001785.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号