当前位置: 首页 > news >正文

做网站买岩棉河北邢台特产

做网站买岩棉,河北邢台特产,中山东莞网站推广,青岛网站建设推广专家全局函数类内实现-直接在类内声明友元即可全局函数类外实现-需要提前让编译器知道全局函数的存在#include <iostream> using namespace std;//通过全局函数来打印Person的信息template<class T1,class T2> class Person{//全局函数&#xff0c;类内实现friend void…

全局函数类内实现-直接在类内声明友元即可

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

#include <iostream>
using namespace std;//通过全局函数来打印Person的信息template<class T1,class T2>
class Person{//全局函数,类内实现friend void printPerson(Person<T1,T2> p){cout << "姓名:" << p.m_Name << " 年龄:" << p.m_Age << endl;}public:Person(T1 name,T2 age){this->m_Name=name;this->m_Age=age;}private:T1 m_Name;T2 m_Age;};
//1.全局函数在类内实现
void test01()
{Person<string,int> p("Tom",20);printPerson(p);
}
int main()
{test01();return 0;
}

你看,其实一开始m_Name和m_Age是一个私有的属性,因为其前面有private关键字,因此前面加上friend,也就是友元的全局函数才能访问这个私有属性。

全局函数在类外实现的时候

#include <iostream>
using namespace std;//通过全局函数来打印Person的信息
template<class T1,class T2>
class Person{//全局函数,类内实现friend void printPerson2(Person<T1,T2> p);// {//     cout << "姓名:" << p.m_Name << " 年龄:" << p.m_Age << endl;// }public:Person(T1 name,T2 age){this->m_Name=name;this->m_Age=age;}private:T1 m_Name;T2 m_Age;};
//1.全局函数在类内实现
// void test01()
// {
//     Person<string,int> p("Tom",20);
//     printPerson(p);
// }
//2.全局函数在类外实现,因为这是一个全局函数,因此其没有必要加作用域
template<class T1,class T2>
void printPerson2(Person<T1,T2> p)
{cout << "类外实现的姓名:" << p.m_Name << " 类外实现的年龄:" << p.m_Age << endl;
}
//全局函数在类外实现的测试
void test02()
{Person<string,int> p("Jerry",28);printPerson2(p);
}
int main()
{test02();return 0;
}

其会出现一个无法解析的错误。

    friend void printPerson2(Person<T1,T2> p);

这是一个普通函数的函数声明。

但是下面这是一个函数模版的实现,因此就导致了这两个不是一个东西。因此我们需要告诉编译器这是一个函数模版的声明。

//2.全局函数在类外实现,因为这是一个全局函数,因此其没有必要加作用域
template<class T1,class T2>
void printPerson2(Person<T1,T2> p)
{cout << "类外实现的姓名:" << p.m_Name << " 类外实现的年龄:" << p.m_Age << endl;
}
#include <iostream>
using namespace std;template<class T1,class T2>
class Person;template<class T1,class T2>
void printPerson2(Person<T1,T2> p)
{cout << "类外实现的姓名:" << p.m_Name << " 类外实现的年龄:" << p.m_Age << endl;
}//通过全局函数来打印Person的信息
template<class T1,class T2>
class Person{//全局函数,类内实现//加空模版的参数列表friend void printPerson2(Person<T1,T2>p){cout << "姓名:" << p.m_Name << " 年龄:" << p.m_Age << endl;}friend void printPerson2<>(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;};
//1.全局函数在类内实现
// void test01()
// {
//     Person<string,int> p("Tom",20);
//     printPerson(p);
// }
//2.全局函数在类外实现,因为这是一个全局函数,因此其没有必要加作用域
template<class T1,class T2>
void printPerson2(Person<T1,T2>& p)
{cout << "类外实现的姓名:" << p.m_Name << " 类外实现的年龄:" << p.m_Age << endl;
}
//全局函数在类外实现的测试
void test02()
{Person<string,int> p("Jerry",28);printPerson2(p);
}
int main()
{test02();return 0;
}

一般没有特殊需求的话,直接就写全局函数配合类内实现就完事儿了,用法非常简单,而且编译器可以直接识别。

http://www.dtcms.com/a/396709.html

相关文章:

  • 长沙做公司网站大概多少钱敬请期待英文
  • 做家装的网站好h5开发教程
  • 阳春网站制作乐清网站建设推广
  • 成都专业网站推广公司网页游戏排行榜前十名田田田田田田田田田田
  • 沈阳哪里做网站用wordpress编辑文章如何全屏
  • 网站制作工作流程个人承包工程合同范本
  • 网站建设维护 知乎浙江在线
  • 小说写作网站建设厅网站查询三类人员
  • 如何在外管局网站上做延期制作wordpress分享
  • 需要做网站设计我做夫人那些年网站登录
  • 网站备案 地址广州洛可可设计公司
  • 怎么下载网站动态图片网站建设中数据库的维护论文
  • 网易做相册旅游网站wordpress退回旧编辑器
  • 织梦网站如何做优化网站分享对联广告
  • 类似百科式的网站建设高密做网站的价格
  • 有做外贸个人网站始兴生态建设网站
  • 企业网站做的公司食品类建设网站的目的
  • 做黄金的人喜欢逛那些网站画册设计要求
  • 贵州省建设监理协会网站是什么系统开发的可行性分析
  • 简单的个人网站下载网站设计怎么算间距
  • 网站建设明细报价单个人网站怎么快速推广
  • 深圳模板网站多少钱wordpress页面模板文件
  • 觉 网站百度问答优化
  • 网站的不同类数字火币交易网站开发
  • 做淘客一定要建网站吗公司seo是什么级别
  • 专业网站制作哪家专业悦阁网站建设
  • 网站制作方案包含哪些内容全网营销型网站新闻
  • 怎么做淘宝客优惠券网站丹阳论坛
  • 中小企业网站建设咨询wordpress开启xmlrppc
  • 做期货浏览哪些网站建设网站找哪个公司