内存高效:模板与基本数据类型

时间:2017-08-17 11:15:13

标签: c++ templates types

在内存分配和管理方面,模板的使用是否优于基本数据类型?

1 个答案:

答案 0 :(得分:2)

简而言之:

templates - 一种以通用方式编写代码的方法,并且在编译时中,如果您使用了模板代码,编译器将根据模板生成代码。

示例:

  #include <iostream>


template<typename T>
T MultiplyByFive(T _val)
{
    return _val * 5;
}

int main()
{
    std::cout << MultiplyByFive(5) << " " << MultiplyByFive(5.5) << std::endl;
    return 0;
}

在此示例中,编译器将生成两个MultiplyByFive函数。一个用于整数,一个用于double。因此输出将是:

25 27.5

那是因为这些函数已被调用。现在我们在代码中有两个函数(由编译器生成)

int MultiplyByFive(int _val)
{
    return _val * 5;
}


double MultiplyByFive(double _val)
{
    return _val * 5;
}

我们没有直接对它们进行编码,但编译器根据我们的模板进行了编码。

内存分配与模板没什么关系。动态内存分配在运行时(由new运算符在c ++中)确定。静态和局部变量在编译时确定,但它与生成代码无关。

如果我不明白这个问题,那么欢迎您澄清。