加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c++之类模板和友元

发布时间:2020-12-16 09:06:32 所属栏目:百科 来源:网络整理
导读:全局函数类内实现:直接在类内声明友元即可;(建议使用这种,更简单) 全局函数类外实现:需要提前让编译器知道全局函数的存在; #includeiostream using namespace std; // 通过类外实现需要先知道Person; template class T1, class T2 class Person; 通过

全局函数类内实现:直接在类内声明友元即可;(建议使用这种,更简单)

全局函数类外实现:需要提前让编译器知道全局函数的存在;

#include<iostream>
using namespace std;

//通过类外实现需要先知道Person;
template<class T1,class T2>
class Person;

通过类外实现需要先知道show2();
template<void show2(Person<T1,T2> p) {
    cout << "姓名:" << p.name << endl;
    cout << 年龄:" << p.age << endl;
};

template< Person {
    全局函数类内实现
    说明:这里这个函数已经不是类的成员函数了,在调用时直接使用即可,而不用p.show();
    friend void show(Person<T1,1)"> p) {
        cout <<  endl;
        cout <<  endl;
    }
    全局函数类外实现
    加空模板参数列表
    需要让编译器提前知道这一个函数的存在
    friend void show2<>(Person<T1,1)"> p);
public:
    Person(T1 name,T2 age) {
        this->name = name;
        this->age = age;
    }
private:
    T1 name;
    T2 age;
};

void test() {
    Person<string,1)">int> p(tom",12);
    show(p);
    show2(p);
}

int main() {
    test();
    system(pause");
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读