/*
* 类模板分文件编写
* 学习目标:
* 掌握类模板成员函数分文件编写产生的问题以及解决方式
* 问题:
* 类模板中成员函数创建时机是在调用阶段,导致份文件编写时链接不到
* 解决:
* 解决方式1:直接包含.cpp源文件
* 解决方式2:将声明和实现写到同一个文件中,并更改后缀名为.hpp,.hpp时约定的名称,并不是强制
*/
#include<iostream>
#include<string>
using namespace std;
//#include "person.cpp"//解决方式1,直接包含cpp源文件
#include "person.hpp"//解决方式2,将声明和实现写到一起,文件名后缀名改为.hpp
void test04()
{Person<string, int> p("Tom", 10);p.showPerson();
}
int main()
{test04();cout<<"Hello World!"<<endl;system("pause");return 0;
}
/*
* person.cpp
*/
#include<iostream>
#include<string>
using namespace std;//构造函数 类外实现
template<class T1,class T2>
Person<T1, T2>::Person(T1 name, T2 age)
{this->m_Name = name;this->m_Age = age;
}//成员函数 类外实现
template<class T1,class T2>
void Person<T1, T2>::showPerson()
{cout << "姓名: " << this->m_Name << " 年龄:" << this->m_Age << endl;
}
//person.h
#pragma once
#include<iostream>
#include<string>
using namespace std;
//类模板中成员函数类外实现
template<class T1, class T2>
class Person
{
public:Person(T1 name, T2 age);void showPerson();T1 m_Name;T2 m_Age;
};
//person.hpp
#pragma once
using namespace std;
#include<iostream>
#include <string>template<class T1,class T2>
class Person
{
public:Person(T1 name, T2 age);void showPerson();
public:T1 m_Name;T2 m_Age;
};//构造函数 类外实现
template<class T1,class T2>
Person<T1, T2>::Person(T1 name, T2 age)
{this->m_Age = age;this->m_Name = name;
}//成员函数 类外实现
template<class T1,class T2>
void Person<T1, T2>::showPerson()
{cout << "姓名: " << this->m_Name << " 年龄:" << this->m_Age << endl;
}

C++学习第一百零七篇相关推荐

  1. “约见”面试官系列之常见面试题之第一百零七篇之vue的作用(建议收藏)

    Vue.js(读音 /vjuː/, 类似于view)是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容 ...

  2. “约见”面试官系列之常见面试题之第一百零四篇之vue优点(建议收藏)

    vue的优点: 1.轻量级框架 只关注视图层,是一个构建数据的视图集合,大小只有几十kb Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统 2.简单易学 国人开发,中文文档,不存在语言障 ...

  3. “约见”面试官系列之常见面试题之第一百零六篇之css只在当前组件中起作用(建议收藏)

    方法很简单,在组件中的style前面加上scoped就可以了,示例:

  4. “约见”面试官系列之常见面试题之第一百零五篇之v-if与v-show(建议收藏)

    相同点:v-if与v-show都可以动态控制dom元素显示隐藏 不同点:v-if显示隐藏是将dom元素整个添加或删除,而v-show隐藏则是为该元素添加css--display:none,dom元素还 ...

  5. “约见”面试官系列之常见面试题之第一百零三篇之vue-router实现路由懒加载(建议收藏)

    vue异步组件 es提案的import() webpack的require,ensure() vue异步组件技术 ==== 异步加载 vue-router配置路由 , 使用vue的异步组件技术 , 可 ...

  6. “约见”面试官系列之常见面试题之第一百零二篇之vue-router的两种模式(建议收藏)

    众所周知,vue-router有两种模式,hash模式和history模式,这里来谈谈两者的区别. hash模式 hash模式背后的原理是onhashchange事件,可以在window对象上监听这个 ...

  7. “约见”面试官系列之常见面试题之第一百零一篇之vue-router传参(建议收藏)

    vue-router传递参数分为两大类 编程式的导航 router.push 声明式的导航 <router-link> 编程式的导航 router.push 编程式导航传递参数有两种类型: ...

  8. 第一百零七期:她说,嫁人就选程序员!

    又是一年双十一,单身狗们还好吗?想脱单?找个程序猿/程序媛是不错的选择,要不要了解一下? 作者:李二狗 图片来自 Pexels 程序员,已经渐渐成当代相亲市场的一只主力军.甚至可以说是"香饽 ...

  9. Baeldung Java 周评 | 第一百零五弹(关键词:如果 Java 是今天设计的、内容丰富的 Spring 会议、JPA 测试用例模版、高性能 Java 持久化、自动化订购午餐、前端五强)

    开篇词 尤金的第 105 篇 Java 周评,诞生了! Spring 以及 Java 相关 如果 Java 是今天设计的:可同步接口 [jooq.org] 关于 Java 中 "可能是什么& ...

最新文章

  1. 判断两个解的支配关系
  2. 【怎样写代码】偷窥高手 -- 反射技术(三):深入窥视字段
  3. datagridview滚动条自动滚动_Win32编程基础之滚动条
  4. 适用于python机器学习与实践的twenty_newsgroups.py文件内容
  5. 每天6亿人在看《延禧攻略》?大数据告诉你哪家视频网站VIP值得买(附代码)
  6. Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署
  7. JAVAWEB入门之Servlet_体系结构
  8. 【BZOJ1406】【codevs2478】密码箱,数论练习
  9. Codeforces Edu Round 64 (Rated for Div. 2)
  10. c语言输出3位数逆序数,C语言求助!一个三位数的逆序数,总是编不对
  11. Kubernetes详解(五)——Kubernetes核心对象
  12. Android入门笔记05
  13. Window Linux双系统安装 超详细教程
  14. IDM插件安装、使用方法教程
  15. 服务器维护合同需要交印花税吗,服务合同需要交印花税吗
  16. (二)GNSS定位中的卫星轨道位置计算
  17. python读取一个文件夹下所有图片_初学Python-找出文件夹下的所有图片
  18. 技术:车牌识别摄像机的应用,无人值守洗车房解决方案
  19. 对于互联网,谈谈自己浅薄的看法
  20. ManualResetEvent,AutoResetEvent 学习

热门文章

  1. 鼠标移入移出事件,mouseover、mouseenter区别
  2. 企业内训方案|领导力与执行力/TTT内训师/管理者情商修炼
  3. win10扬声器红叉_win 10小喇叭显示红叉,怎么解决?
  4. 钉钉小程序免登录授权
  5. Doze模式adb shell命令集
  6. WDK10+VS2017+VMware+Win10x64[10586专业版]+SDK10+HelloWorld
  7. Mac中vim的 进入编辑状态、退出编辑状态、强制保存并退出
  8. oracle怎么看一个表结构,Oracle查看表结构的几种方法
  9. shell中的pushd与popd
  10. java-net-php-python-29spm汽车养护网计算机毕业设计程序