zoukankan      html  css  js  c++  java
  • C++ 模板template和template

    原文链接:https://blog.csdn.net/skyleung/article/details/42195509

    template<class T>和template<typename T>都可以用来定义函数模板和类模板,在使用上,他们俩没有本质的区别。

    在C++早期版本中,没有typename这个关键字,所以在模板定义的时候便使用了class。

    在C++后期的版本中,为了不再和class向混淆,所以加入了新的关键字typename用以区分。对于我个人而言,在定义模板函数时,更倡导使用typename关键字。


    这里,顺便记录一下模板函数和模板类的定义和使用。用户在程序编译前,只定义了模板函数

    template <typename T, typename T2>

    void func(T1 t1, T2 t2){}

    以及模板类

    template <typename T, typename T2>

    class MyTemplateClass

    {

    。。。

    };


    以及在另外某处的调用:

    func(5, "hello");

    func("World", 5.60);

    MyTemplateClass<int, String> *instance = newMyTemplateClass<int, String>();

    MyTemplateClass<String, String> instance2();

    那具体的函数或者类在什么时候生成呢?在编译的时候,编译完成之后,所有的具体函数以及具体类都生成了。

    在编译时,编译器根据func()实参的类型,生成func(int, char*)以及func(char*, float)。模板类的生成也是同理,根据instance及instance2生成新的类,并编译。



  • 相关阅读:
    社群电商
    文字超出部分省略号显示······
    jq监听页面的滚动事件,
    input 更改 pleaseholder 的字体样式
    20161213 scrapy安装
    map按照value排序的方法
    Qt跨线程信号和槽的连接
    C++ map指针的使用
    Python 高级进阶
    [转]解读C指针(5)——笔试题解析
  • 原文地址:https://www.cnblogs.com/wishchin/p/9199836.html
Copyright © 2011-2022 走看看