在内存分配和管理方面,模板的使用是否优于基本数据类型?
答案 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 ++中)确定。静态和局部变量在编译时确定,但它与生成代码无关。
如果我不明白这个问题,那么欢迎您澄清。