美文网首页
14.类模板与友元

14.类模板与友元

作者: lxr_ | 来源:发表于2021-03-31 19:41 被阅读0次
#include<iostream>
using namespace std;

//掌握类模板配合友元函数的类内和类外实现

//全局函数类内实现-直接在类内声明友元即可
//全局函数类外实现-需要提前让编译器知道全局函数的存在


//1.类外实现先声明模板类的存在
template<class T1, class T2>
class PERSON;

//2.全局函数类外实现
template<class T1, class T2>
void PrintPerson1(PERSON<T1, T2> p)
{
    cout << "姓名:" << p.m_Name << endl;
    cout << "年龄:" << p.m_Age << endl;
}

template<class T1,class T2>
class PERSON
{
    //全局函数类内实现
    friend void PrintPerson(PERSON<T1,T2> p)
    {
        cout << "姓名:" << p.m_Name << endl;
        cout << "年龄:" << p.m_Age << endl;
    }

    //3.全局函数类外实现
    //加空模板参数列表
    //如果全局函数是类外实现,需要让编译器提前知道这个函数的存在
    friend void PrintPerson1<>(PERSON<T1, T2> p);

public:
    PERSON(T1 name,T2 age)
    {
        this->m_Name = name;
        this->m_Age = age;
    }

private:

    T1 m_Name;
    T2 m_Age;
};


void test14()
{
    //全局函数在类内实现
    PERSON<string, int>p("xiansifan",22);
    
    PrintPerson(p);


    //全局函数在类外实现
    PERSON<string, int>p1("hello", 23);
    PrintPerson1(p1);
}
int main()
{

    test14();

    system("pause");
    return 0;
}

相关文章

  • 14.类模板与友元

  • 14/15

    约束模板友元 模板类的外边定义一个模板函数,在模板类中将模板函数具体化为模板类的友元函数 非约束模板友元 模板类中...

  • 类模板中的友元函数

    今天写cpp的时候,忘记了类模板中的友元怎么用了记录一下 先声明类模板,和友元函数 类模板中声明友元函数 类模板外...

  • 10-C++远征之模板篇-学习笔记

    C++远征之模板篇 将会学到的内容: 模板函数 & 模板类 -> 标准模板类 友元函数 & 友元类 静态数据成员 ...

  • 慕课网-C++远征之模板篇(上)-学习笔记

    C++远征之模板篇 将会学到的内容: 模板函数 & 模板类 -> 标准模板类 友元函数 & 友元类 静态数据成员 ...

  • 14/14模板和友元之非模板友元

    1.非模板友元:将模板类中的函数作为友元

  • C++类模板与友元的关系

    总结起来一共有这么几条: 如果一个类模板包含一个非模板友元,则友元被授权可以访问所有类模板实例。 如果一个非模板类...

  • 15.C++泛型

    模板函数 模板类 函数模板和友元函数 注意,只在重载左移右移运算符的时候使用友元函数,其他都不要用,友元函数容易导...

  • C++中的友元

    友元的介绍 什么是友元?友元是C++中的一种关系友元关系发生在函数与类之间或者类与类之间友元关系是单项的,不能传递...

  • C++11笔记

    友元类是模板类的声明 有一个类成员私有,希望指定的模板类可以访问,比如: 只希望Container能访问私有成员,...

网友评论

      本文标题:14.类模板与友元

      本文链接:https://www.haomeiwen.com/subject/uwyahltx.html