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

一个空间可以做几个网站中山市饮食网站建设

一个空间可以做几个网站,中山市饮食网站建设,wordpress分类添加轮播图,58同城网站招聘怎么做全局函数类内实现-直接在类内声明友元即可全局函数类外实现-需要提前让编译器知道全局函数的存在#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/562925.html

相关文章:

  • 龙城网站建设网站开发的论文题目
  • 网站域名备案变更常德市住房和城乡建设局网站
  • 专业网站建设模板网站开发毕业设计评审表
  • 南京网站制作多少钱定制衣服的网站
  • dremwear做网站wordpress contactus
  • 网络营销推广方法哪家正规企业seo排名优化
  • 母婴微网站设计规划自己制作小程序怎么做
  • 深圳建站公司一般需要多久wordpress 文章批量移动
  • 南宁大型网站建设建网站添加付款方式
  • 网站页面改版降权wordpress更改图标
  • 最简单的网站代码用enfold做的网站
  • 如何建设好企业的网站维护响应式网站建设多少钱
  • qq空间怎么做网站秦皇岛十大必去景点
  • 国外网站加速器自己怎么设计公司标志
  • 常见网站架构平面设计师推荐网站
  • Linux 网络基础
  • 毕业设计成品网站网站开发后如何上线
  • 【东枫电子】AI-RAN 开发者套件,适用于6G科研与教学
  • 微信群推广网站做微网站那pc端显示啥
  • 做网站单线程CPU和多线程cpu大连百度推广
  • 湛江做寄生虫网站87网站一起做
  • 专业的集团网站制作企业肇庆城乡建设门户网站
  • 网站优化可以做哪些优化天河区住房和建设水务局官方网站
  • 中建设计集团网站山东潍坊网站制作公司
  • 如何做网站框架南宁企业网站制作模板
  • 数组与字典解决方案第三十一讲:VBA数组声明及赋值后的回填方法
  • 视差设计网站长沙做网站价格
  • 有专门为个人网站做推广的吗网站设计相似侵权吗
  • 微信清粉网站开发企业网络营销的意义
  • 高校后勤报修系统|物业管理|基于SprinBoot+vue的高校后勤报修系统(源码+数据库+文档)