2017-08-17 93 views

回答

2

只是在短:

模板 - 一种以一种通用的方式编写一次代码,并在编译时间编译器会根据模板生成代码,如果你使用的templatic代码。

例如:

#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功能。一个用于整数,另一个用于双精度。因此,输出将是:

25 27.5 

这是因为这些功能已被调用。现在我们的代码(由编译器生成)两大功能

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


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

我们没有直接对其进行编码,但根据我们模板编译器一样。

内存分配与模板无关。动态内存分配在运行时间(新操作员在C++中)中确定。静态和局部变量是在编译时确定的,但它与生成代码无关。

如果我不明白这个问题,欢迎您进一步澄清。

+0

哇!我很好奇,如果我们将模板/泛型应用于我们的功能而不是任何特定的数据类型。在内存分配和管理方面推荐哪一种。 –

+1

我不确定我的理解。 分配与数据有关。模板是关于代码,功能等的。 您可以使用模板来处理数据,但通常只是为了表明您可以。 你在想什么?举一个例子 –

+0

你确实清除了我的怀疑。 :D感谢哥们。我希望我可以对你的回复进行投票。 –