美文网首页
函数重载,模板

函数重载,模板

作者: wjundong | 来源:发表于2020-01-09 16:50 被阅读0次

如果同一作用域内的几个函数名字相同,但形参列表不同,我们称之为重载函数(注意:这里没有提到返回值)。
当调用这些函数时,编译器会根据传递的实参类型推断想要的是那个函数

函数模板什么时候被实例化

*调用时

  • 指针指向时

函数模板指针指向也能实例化

#include <iostream>

using namespace std;


template <typename T>
T myabs(T &val)
{
    return val > 0 ? val : -val;
}


int main()
{
    int (*func)(int) = myabs;

}

类模板被实例化情况

  1. 定义类模板对象时
  2. 通过类指针或引用指向一个类模板实例时,只有当检查这个指针或引用指向的对象时(访问数据成员或成员函数),才会实例化。
  3. 当类模板被实例化时,类模板的成员函数并不自动被实例化。只有该函数被调用或取地址时,才被实例化。
  4. 静态数据成员只有被使用时才被实例化。

类模板的static 成员

  1. 类模板的每个实例化的类都有自己的static成员。
  2. 实例化的模板类的所有对象共享一个static成员。
  3. 类模板的static数据成员同样要在类外部定义。
template <typename T>
class Data{
public:
    Data() {}
    T getData();
    void setData(T dat);
    static T staticValue;
private:
    T data;
};

template <typename T>
T Data<T>::staticValue;


template <typename T>
T Data<T>::getData()
{
    return data;
}

int main()
{

    Data<int> a, b;
    Data<double> c;
    a.staticValue = 12;

    cout << a.staticValue << endl;
    cout << b.staticValue << endl;
    cout << c.staticValue << endl;
}

相关文章

  • 2022-02-28

    函数重载 特征标-函数参数 函数模板 模板的重载 显示具体化 头文件管理 如果没有被定义过才查看 idndef 和...

  • 2018-05-05

    CPP强弱类型 宽字符本地化 函数模板 函数重载: 根据参数来识别函数模板: 原生函数优先于模板函数 强行调用...

  • 函数重载,模板

    如果同一作用域内的几个函数名字相同,但形参列表不同,我们称之为重载函数(注意:这里没有提到返回值)。当调用这些函数...

  • TMP(2)

    深入模板原理 函数模板,类模板的实参推导 函数模板的实参推导函数模板的实参推导是发生在名字查找之后,和重载决议之前...

  • [笔记No.2]C++模板攻略-函数模板

    1.5重载模板函数 对于非模板函数重载不想解析太多,那是C语言范畴已有的编程技术,若你本身没概念的话,请返回上一篇...

  • 15.C++泛型

    模板函数 模板类 函数模板和友元函数 注意,只在重载左移右移运算符的时候使用友元函数,其他都不要用,友元函数容易导...

  • Geekband C++ 第五周

    概述 C++模板简介 函数模板 C++类模板 操作符重载 泛型编程 容器

  • 函数模板,不是模板类,与函数重载的情况.以及函数模板的机制研究

    这里有:1.函数模板的基本调用2.当函数模板和函数重载在一起的时候,先调用普通函数还是函数模板2.函数模板在c++...

  • 17 基于类型属性的重载

    基于模板实参属性重载函数模板是很自然的需求,比如 然而,C++现在还不提供任何直接表达基于类型属性重载的方法,两个...

  • 《C++ Primer Plus》:函数探幽

    本章内容概览 内联函数 引用变量 按引用传递函数参数 默认参数 函数重载 函数模板 内联函数 内联函数是C++为提...

网友评论

      本文标题:函数重载,模板

      本文链接:https://www.haomeiwen.com/subject/fhayactx.html