2017-08-17 92 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感謝哥們。我希望我可以對你的回覆進行投票。 –