首页 > 其他分享 >64. 类模板碰到友元函数

64. 类模板碰到友元函数

时间:2024-09-02 15:25:21浏览次数:5  
标签:友元 printPerson2 printPerson3 void Person 64 friend template 模板


  • 类模板碰到友元的问题以及解决
  • 友元类内实现
  • friend void printPerson(Person<T1, T2> &p)
  • 友元类外实现
  • 声明:
  • friend void printPerson2<>(Person<T1, T2> &p);
  • 实现:
  • template<class T1,class T2>
    -void printPerson2(Person<T1, T2> &p){ 。。。}
  • template<class T1,class T2>
  • class Person;
  • template<class T1,class T2>
  • void printPerson2(Person<T1, T2> &p);
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
#include <string>

template<class T1,class T2>
class Person;

template<class T1,class T2>
void printPerson2(Person<T1, T2> &p);

template<class T1,class T2>
void printPerson3(Person<T1, T2>&p)
{
	cout << "类外实现 --- 姓名: " << p.m_Name << " 年龄: " << p.m_Age << endl;
}

template<class T1, class T2>
class Person
{
	//1、友元函数 类内实现
	friend void printPerson(Person<T1, T2> &p)
	{
		cout << "姓名: " << p.m_Name << " 年龄: " << p.m_Age << endl;
	}

	//2、友元函数 类外实现
	friend void printPerson2<>(Person<T1, T2> &p);

	
	friend void printPerson3<>(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;
};

template<class T1,class T2>
void printPerson2(Person<T1, T2> &p)
{
	cout << "类外实现 --- 姓名: " << p.m_Name << " 年龄: " << p.m_Age << endl;
}

void test01()
{
	Person <string, int> p("Tom", 100);
	printPerson(p);
	printPerson2(p);
	printPerson3(p);
}

int main(){

	test01();

	system("pause");
	return EXIT_SUCCESS;
}


标签:友元,printPerson2,printPerson3,void,Person,64,friend,template,模板
From: https://blog.51cto.com/zaishu/11898424

相关文章

  • 多重背包问题 模板 C++实现
    问题:有n 种物品和一个容量是c 的背包。第i种物品最多有num[i-1] 件,每件体积是weight[i-1],价值是value[i-1]。求解将哪些物品装入背包,可使物品重量总和不超过背包容量,且价值总和最大。输出最大价值。算法1:三重循环内层循环用于考虑当前物品i可......
  • 对象池泛型模板
    对象池泛型模板delphi和lazarus都适用。泛型配合继承,无敌的存在。//cxg2024-9-2//对象池的泛型模板unitsys.pool;{$idef.inc}interfaceuses//system--------Generics.Collections,Classes,SysUtils;typeTPool<T>=classprivate//连接池的空闲......
  • 打破平台限制,使智能手机和平板电脑上无缝运行Windows x86/x64架构的软件和游戏的一款
    大家好,今天给大家分享一款专为Android设备设计的模拟器应用Winlator。其核心功能是能够在基于ARM架构的智能手机和平板电脑上无缝运行Windowsx86/x64架构的软件和游戏。Winlator是一款Android应用程序,它允许用户使用Wine和Box86/Box64在Android设备上运行Windows(x86_64)应用......
  • Affinity Photo 2.5.3.2516 x64 (照片编辑) 授权版
    AffinityPhoto是全球数百万创意和摄影专业人士的首选。这款备受赞誉的图像编辑软件拥有令人难以置信的速度、功能和精度,可以满足您编辑和修饰照片、创建多图层构图、精美的栅格绘图等一切需要。该版本已授权,可以免费使用。软件截图:使用说明:1、将压缩文件解压到某固定位......
  • 春秋云镜CVE-2022-29464 (WSO2文件上传漏洞)
    目录一:访问靶机:2:根据提示知道可以文件上传3:两个方法一:访问靶机:2:根据提示知道可以文件上传3:我们两个方法1:使用EXPimportrequestsimporturllib3urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)url=input("请输入URL:")file="shell.jsp"pa......
  • 模板2
    字符串KMPnxt[i]:$b[1:i]$的最长border$b[1:nxt_i]$,且$nxt_i<i$。voidinit(){intp=0;F(i,2,m){while(p&&b[p+1]!=b[i])p=nxt[p];//p+1尝试与i匹配if(b[p+1]==b[i])p++;nxt[i]=p;}}voidkmp(){intp=0;F(i,1,n){......
  • 六大排序(算法详解+模板+例题)
    一.排序算法是什么排序算法(SortingAlgorithms)是一种数据结构操作,它的目的是将一串元素按照特定的顺序规则组织起来。常见的排序算法有升序(从小到大)和降序(从大到小)排列,如冒泡排序、希尔排序、插入排序、选择排序、快速排序、归并排序等。排序的主要目的是为了方便查找、分析数......
  • 白骑士的CSS高级篇之CSS Grid布局进阶 4.1.2 网格模板与区域
            CSSGrid布局是CSS中强大的布局系统之一,它提供了更灵活和更高效的方式来创建复杂的网页布局。通过Grid布局,你可以将网页划分为多个网格区域,并在这些区域中放置内容,这使得布局更加直观和易于维护。本文将深入探讨Grid布局中的网格模板和区域的概念,帮助你掌握如......
  • 用Python解决预测问题_对数线性模型模板
    对数线性模型(Log-linearmodel)是统计学中用于分析计数数据或频率数据的一类模型,特别是在多维列联表(contingencytables)分析中非常常见。这种模型通过取对数将乘法关系转换为加法关系,从而简化了数据分析。在对数线性模型中,我们通常对观测频数的对数进行建模,模型的形式可以表示......
  • STM32硬件篇:W25Q64
    W25Q64简介W25Qxx系列是一种低成本、小型化、使用简单(使用SPI通信协议)的非易失性(掉电不丢失)存储器,常用于数据存储、字库存储、固件程序存储等场景。【注意】W25Qxx芯片只支持SPI的模式0和模式3。存储介质:NorFlash(闪存)时钟频率:80MHz/160MHz(DualSPI)/320MHz(QuadSPI)------......