C++中类模板的使用

类模板是类的抽象,类是类模板的实例。

声明类模板:template<class T1,class T2...>//可声明多个类型参数

关于类模板的使用谨记一点。用类模板实例化的类中实参数类型去代替声明时的类型参数名。

如声明:template <class T1,class T2>

class Compare

{

public:

Compare(T1 a,T2 b):x(a),y(b){};

void display();

private:

T1 x;

T2 y;

};

实例化:Compare<int,float> cmp(2,3.14);

此处即用int代替模板中的T1,float代替模板中的T2;

下面以两段程序说明类模板的使用:

1、在类模板内定义成员函数,含两个类型名:

#include<iostream>

using namespace std;
template <class T1,class T2>
class Compare
{
public:
    Compare(T1 a,T2 b):x(a),y(b){};
    void display()
    {
    cout<<x<<endl;
    cout<<y<<endl;
    }
private:
    T1 x;
    T2 y;
};

int main()
{
    Compare<int,float> cmp(2,3.14);
    cmp.display();
    return 0;
}

2、在类模板外定义成员函数,含两个类型名:

#include<iostream>

using namespace std;
template <class T1,class T2>
class Compare
{
public:
    Compare(T1 a,T2 b):x(a),y(b){};
    void display();
private:
    T1 x;
    T2 y;
};

template <class T1,class T2>//此处还需在声明一次  不然会报错
void Compare<T1,T2>::display()
{
    cout<<x<<endl;
    cout<<y<<endl;
}

int main()
{
    Compare<int,float> cmp(2,3.14);
    cmp.display();
    return 0;
}
时间: 2024-10-09 18:37:30

C++中类模板的使用的相关文章

C++ 之 类模板的分离式编译

模版编译篇 目录:1.对于C++中类模板的分离式编译的认识 2.具体的实例 1.对于C++中类模板的分离式编译的认识 为什么C++编译器不能支持对模板的分离式编译(博文链接) 主要内容:编译器编译的一般工作原理.对模版的分离式编译的特殊性(模版的特殊性) 链接: http://blog.csdn.net/pongba/article/details/19130 模版编译的特殊性 对程序进行编译时,对于函数调用,编译器只要求函数的原型在调用点是可见的,至于函数的定义是否存在不做检查(在对程序进行链

C++模板机制总结

模板是C++中非常重要的组成部分,之前自己对这块领域一直不太熟悉.最近趁着有时间学习了一下,特此总结. 首先是函数模板,它的定义方式如例子所示: template <typename T>T sum(T a,T b) { return a+b; } 类也有自己的模板,称为类模板,如下所示: template <typename T>class Proxy { public: typedef T value_type; Proxy(); ~Proxy(); value_type va

线性表-顺序表、链表类模板的实现(数据结构基础 第2周)

学习完课程后,自己用C++实现了简单的顺序表和链表,并用约瑟夫问题做了测试,不保证完全正确. 其中有一点需要注意一下:C++中类模板声明头文件和实现头文件不可以分离到.h和.cpp中,否则无法正常编译,详见:https://www.zhihu.com/question/20630104 源码 1.顺序表 //seqlist.h #pragma once #include <iostream> using namespace std; template <class T> class

vs 2010 中类文文件模板的修改

类模板 文件的修改,以前也修改过,这次有个同事问我,搞了有一会才搞定,这里还是记录分享下. 如果想在每次创建文件时,自动生成文档注释(注意是自动生成文档注释而不是帮助文档),如下面的代码,需要设置VS的模板,新创建的cs类文件会根据模板的样子进行生成.常用的VS文件模板有3个,分别是Class.zip.Interface.zip.From.zip. 这里以Class.zip模板设置为例,模板在vs2010下的路径 C:\Program Files (x86)\Microsoft Visual S

idea中类注释和方法注释模板添加方法

只需一句话就能搞定NVelocity模板引擎,源码+解析+文档+资料+注释

好长时间不发技术方面的动态了,今天无聊就发篇关于NVelocity的技术文章吧,这门技术来源于java开源项目Velocity,比较好用,其他的我也不过多介绍了,没听过的在文章末尾会有介绍,下面我们就实战吧~ 咱们直接上最简单的方法,一句话搞定: DNTNvelocityHelper.NvelocityTemplate(context.Request.MapPath("~/NVelocity/templates/"), context, "Templater_index.dn

iOS中类和对象,还有nil,Nil,NULL的区别

一.类和对象 类与对象的概念: 1.类是对同一类事物的高度抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法) 2.对象是类的一个实例,是一个具体的事物 3.类其实就是一种数据类型,它的变量就是对象 4.类与类之间的关系--继承关系 eg:学生与小学生,小学生也是学生,所以学生是小学生的父类,小学生是学生的子类 OC与面向对象: 1.对象是oc程序的核心.“万事万物皆对象”是程序中的核心思想 2.类是用来创建同一类型的对象的模板,在一个类中定义了该类对象所具有的成员变量及方法

模板与继承之艺术——空基类优化

1.概念 C++中有“空”类的概念,这就意味着在运行期间其内部不好任何内存. 只包含类型的成员函数.非虚成员函数和静态数据成员的类为空类. 非静态的数据成员,虚函数和虚基类则在运行时期消耗存储空间. 2.空基类优化如下: #include<iostream> using namespace std; class Empty{ typedef int Int; }; class EmptyToo : public Empty {}; class EmptyThree : public Empty

Flask Web Development - Flask 模板1 - 模板机制&Jinja2引擎

节选自PartI Chapter3,这个chapter主要讲模板工作原理,这里讲的就是Jinja2这个模板,另外还提到了Flask-Bootstrap及Flask-Moment两个插件,前者对Flask使用Bootstrap做了些封装,后者对moment.js做了些封装.内容较多,估计分开搞. 模板存在的意义 可维护性高的代码是结构良好且整洁的. 当用户在网站注册一个账户时,他在表单里填入邮箱跟密码,并点击提交按钮.在server端就收到一个包含这些数据的request,再由Flask分发到相应