C++ 模板

C++ 模板

typename 和 class 关键字

在c++模板中非常多地方都用到了typename与class这两个关键字,并且好像能够替换,是不是这两个关键字全然一样呢?

class用于定义类,在模板引入c++后,最初定义模板的方法为:template,这里class关键字表明T是一个类型。后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typename这个关键字。它的作用同class一样表明后面的符号为一个类型,在模板定义语法中关键字class与typename的作用全然一样。

类模板与模板类的概念

一个类模板(也称为类属类或类生成类)同意用户为类定义一种模式。使得类中的某些数据成员、默写成员函数的參数、某些成员函数的返回值,能够取随意类型(包含系统提前定义的和用户自己定义的)。
假设一个类中数据成员的数据类型不能确定。或者是某个成员函数的参数或返回值的类型不能确定。就必须将此类声明为模板,它的存在不是代表一个详细的、实际的类,而是代表着一类类。

类模板定义

定义一个类模板,一般有双方面的内容:

  • 首先要定义类,其格式为
template <class T>
class foo
{
……
}

foo 为类名,在类定义体中,如采用通用数据类型的成员,函数参数的前面需加上T。当中通用类型T能够作为普通成员变量的类型,还能够作为const和static成员变量以及成员函数的参数和返回类型之用。

template<class T>
class Test{
private:
    T n;
    const T i;
    static T cnt;
public:
    Test():i(0){}
    Test(T k);
    ~Test(){}
    void print();
    T operator+(T x);
};

由于历史原因,C++模板无法做到声明和实现分离,所以C++模板都是开源的。

参考资料

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • C++ 模板简介 一、模板 使用模板的目的就是能够让程序员编写与类型无关的代码。 模板是一种对类型进行参数化的工具...
    MinoyJet阅读 2,569评论 0赞 12
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,764评论 1赞 51
  • 我们想要定义多个函数,每个函数比较一种给定类型的值,可能定义多个重载函数。 这两个函数几乎是相同的,唯一不同就是参...
    Wangcy阅读 457评论 0赞 0
  • 今天是夏令营开始的第一天,我们全部6点多起床,吃完早餐后,我们进行了水上拓展和逃生墙的项目。在这次夏令营活动中,除...
    育心茵可妈阅读 401评论 0赞 1
  • 又回来了 过了好久 发生了了一些事情 有开心 也有伤心的 比如我不能像以前那样怀抱着卡梅拉满屋子里面转悠 所以拥...
    石榴花开_2019阅读 345评论 0赞 0

友情链接更多精彩内容