C template模板函式的定義與呼叫

2021-07-26 11:26:56 字數 1754 閱讀 7557

引用《c++primer(第四版)》裡的觀點:

1)標準c++為編譯模板**定義了兩種模型:「包含」模型和「分別編譯」模型。

2)所有編譯器都支援「包含」模型,某些編譯器支援「分別編譯」模型。

問題的提出:(帖子在:

宣告和實現都放在標頭檔案裡。

在類模板標頭檔案template_compile.h中:

template

t>

class base

; ~base() {};

t add_base(t

x,ty);

};

templatet>

t base::add_base(t

x,ty)

在使用模板的測試檔案use_template.cpp中:

#include

#include "template_compile.h"

using

namespace

std;

void main()

; ~base() {};

t add_base(t x,t y);

};

#include "template_compile.cpp"

在類模板的實現檔案template_compile.cpp中:

templatet>  

t base::add_base(t x,t y)

測試檔案不變。

使用define

在類模板標頭檔案template_compile.h中:

templateclass base  

; ~base() {};

t add_base(t x,t y);

};

#define temp

#include "template_compile.cpp"

在類模板的實現檔案template_compile.cpp中:

#ifdef temp  

templatet>

t base::add_base(t x,t y)

#endif

測試檔案不變。

在類模板標頭檔案template_compile.h中:

template

t>

class base

; ~base() {};

t add_base(t

x,ty);

};

在類模板的實現檔案template_compile.cpp中:

#include "template_compile.h"  

templatet>

t base::add_base(t x,t y)

在使用模板的測試檔案use_template.cpp中:使用#include 「template_compile.cpp」

#include

#include "template_compile.cpp"

using

namespace

std;

void main()

c template筆記 1 模板函式

template inline t const max t const a,t const b include include include max.hpp int main 輸出結果 max 1,2 ok max 1,1.2 wrong max static cast 4 4.1 ok 若兩個引...

c template筆記 1 模板函式

template inline t const max t const a,t const b include include include max.hpp int main 輸出結果 max 1,2 ok max 1,1.2 wrong max static cast 4 4.1 ok若兩個引數...

c template筆記 1 模板函式

template inline t const max t const a,t const b include include include max.hpp int main 輸出結果 max 1,2 ok max 1,1.2 wrong max static cast 4 4.1 ok若兩個引數...