c++之类模板和友元
时间:2022-07-23
本文章向大家介绍c++之类模板和友元,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
全局函数类内实现:直接在类内声明友元即可;(建议使用这种,更简单)
全局函数类外实现:需要提前让编译器知道全局函数的存在;
#include<iostream>
using namespace std;
//通过类外实现需要先知道Person;
template<class T1, class T2>
class Person;
//通过类外实现需要先知道show2();
template<class T1, class T2>
void show2(Person<T1, T2> p) {
cout << "姓名:" << p.name << endl;
cout << "年龄:" << p.age << endl;
};
template<class T1, class T2>
class Person {
//全局函数类内实现
//说明:这里这个函数已经不是类的成员函数了,在调用时直接使用即可,而不用p.show();
friend void show(Person<T1, T2> p) {
cout << "姓名:" << p.name << endl;
cout << "年龄:" << p.age << endl;
}
//全局函数类外实现
//加空模板参数列表
//需要让编译器提前知道这一个函数的存在
friend void show2<>(Person<T1, T2> p);
public:
Person(T1 name, T2 age) {
this->name = name;
this->age = age;
}
private:
T1 name;
T2 age;
};
void test() {
Person<string, int> p("tom", 12);
show(p);
show2(p);
}
int main() {
test();
system("pause");
return 0;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PAT (Advanced Level) Practice 1002 A+B for Polynomials (25 分)
- 关于MySQL varchar类型最大值,原来一直都理解错了
- PAT (Basic Level) Practice (中文)1028 人口普查 (20 分)
- 稀疏矩阵计算器(三元组实现矩阵加减乘法)
- PAT (Basic Level) Practice (中文)1029 旧键盘 (20 分)
- WPF 获取屏幕某个点的颜色
- 谈一谈递归算法
- 二、类加载器与类初始化深度剖析
- PAT (Basic Level) Practice (中文)1030 完美数列 (25 分)
- 八皇后递归实现
- PAT (Basic Level) Practice (中文)1031 查验身份证 (15 分)
- PAT (Advanced Level) Practice 1021 Deepest Root (25 分)
- ESlint + stylelint + VSCode自动格式化代码(2020)
- PAT (Basic Level) Practice (中文)1032 挖掘机技术哪家强 (20 分)
- PAT (Advanced Level) Practice 1023 Have Fun with Numbers (20 分)