C++允许模版化类中的单个方法,这些方法可以在一个类模版中,也可以在一个非模版化的类中。
在编写一个模版化的类方法时,实际上是为不同类型编写不同版本的方法,在类模版中,方法模版对赋值运算符和复制构造函数非常有用。
要注意的是,不能用方法模版编写虚方法和析构函数。
1.一个普通类中的方法模版例子:
#include <iostream>
using namespace std;
class man{
private:
string name;
public:
man(const string &m):name(m){
}
template <class T>
void show(T t){
cout<<"This is "<<t<<" vesion:"<<name<<endl;
}
};
int main()
{
man m("guang");
m.show(100);
m.show("string");
m.show(0.999);
}
运行结果:
2.一个模版类中的方法模版例子
其实两者的差别并不大。
#include <iostream>
#include <string>
using namespace std;
template<class T>
class man{
private:
string name;
T data;
public:
man(const string &m,T d):name(m),data(d){
}
template <class TT>
void show(TT t){
cout<<"This is "<<t<<" vesion:"<<endl;
cout<<"name="<<name<<" ,data="<<data<<endl;
}
};
int main()
{
man<int> m("guang",10);
m.show(100);
m.show("string");
m.show(0.999);
cout<<endl<<endl;
man<string> ms("jing","love");
ms.show(100);
ms.show("string");
ms.show(0.999);
}
运行截图:
3.如果同时存在同名的函数,方法模版不会替换同名非模版方法。非模版方法是优先于模版方法的,相当于模版方法在该实例会被覆盖,这个会在下两篇中详细介绍。
例子:
#include <iostream>
#include <string>
using namespace std;
template<class T>
class man{
private:
string name;
T data;
public:
man(const string &m,T d):name(m),data(d){
}
<span style="color:#ff0000;">void show(int i)const{
cout<<"这里是非模版方法!!"<<endl;
cout<<"name="<<name<<" ,data="<<data<<endl<<endl;
}
template <class TT>
void show(TT t)const{
cout<<"这里是模版方法:"<<endl;
cout<<"This is "<<t<<" vesion:"<<endl;
cout<<"name="<<name<<" ,data="<<data<<endl;
}</span>
};
int main()
{
man<int> m("guang",10);
m.show(100);
m.show("string");
m.show(0.999);
cout<<endl<<endl;
man<string> ms("jing","love");
ms.show(100);
ms.show("string");
ms.show(0.999);
<span style="white-space:pre"> </span>
}
运行截图:
分享到:
相关推荐
该笔记是我在mooc上看C++程序设计时做的一些笔记,因为是突发学习C++,要什么就学习什么,现在已经学到“文件输入输出流”,因为现在的项目不需要用到模板的知识,所以暂时只学到这么多,之后肯定还得学的,这个老师...
关于学习C++《STL模板库》以及学习《STL源码剖析》的学习笔记。
C++学习笔记和常见面试知识点,C++11特性,包括多态、虚表、移动语义、友元函数、符号重载、完美转发、智能指针、const和static、数组指针和指针数组、struct内存对齐、enum和union关键字等等。帮助了解C++的特性,...
Boost 模板元编程学习笔记(二),开始你模板元编程的历程。C++,模板,标准库,元编程,教程,笔记
数据结构与算法分析学习笔记(C++)chm 排版很好,代码直接能用,大牛写的,模板运用的很好
P167~184C++类和函数模板学习笔记.docx
C++学习笔记,基础知识和后边的高级部分,类,模板,异常等都有。
欢迎来到我的个人C++学习笔记!这是我在学习C++编程语言过程中的记录和心得分享。我希望这些笔记能够帮助那些刚开始接触C++的新手们理解基本概念、语法规则以及编程技巧。 在这里,您会找到从基础语法到高级特性的...
一、C++语言语法基础(6) 二、数据结构和算法 三、模板和STL 四、阶段项目
C++学习总结(真正的思考总结),包含面向对象思想的理解、模板编程与其他小窍门(有涉及C++11新特性)
第八章函数探幽 内联函数 默认参数 函数重载 函数模板
opencv教程个人学习笔记总结及C++示例.zip
标准模板库(STL)学习笔记,以STL容器list为例,学习C++标准模板库及其算法之for_each()、count()、count_if()。
模板编程和标准模板库的笔记,如果了解了数据结构,看这个文档就如鱼得水!
本文件是C++提高部分的学习笔记,主要是针对C++模板、STL容器、函数和常用算法做详细的讲解,探讨C++更深层的使用。
非常简洁明了的数据结构参考源码,基于C++模板类封装,稍加修改可以用于实际项目中
或是学习源码时遇到模板黑魔法不得其解,或是见他人轻松把玩模板心生羡慕,或是希望无限逼近精通 C++ 的状态,C++ 爱好者对模板求知若渴却又望而生畏。分享该笔记,希望帮助更多 C++ 爱好者掌握模板的使用。 相关...
64位 VS2010 配置Boost库,这是学习Boost标准库开发的基础。
C++中数组很坑,有没有类似Python中list的数据类型呢?类似的就是vector! vector 是同一种类型的对象的集合 ,每个对象都有一个对应的整数索引值。和 string 对象一样,标准库将负责管理与存储元素相关的内存。 ...