1樓:匿名使用者
可以template < typename t >
t max( t a, t b )
這個 max 函式就是一個模板函式,它可以傳入一個 「型別」的引數,以便實現任意型別求最大值回的效果。假設我們這樣使用它:
int x=5, y=10;
int z=max ( x, y );
這時候發生了什麼呢?我們傳入的「型別引數」是int,因此編譯器在編譯這段**時會使用 int 來構造一個新函式:
int max( int a, int b )
後面的事就和編譯普通的函式一樣了,c++編譯器繼續使用強型別系統編譯這個函答數,由強型別系統來檢查這個函式是否正確。
這個過程叫做模板的「特化」,它發生在編譯期,當編譯器發現模板函式、模板類被使用(注意,不是定義)的時候進行的。這個系統實際上比較像巨集,但是比巨集更為智慧。
很明顯,編譯器必須知道模板如何特化這個函式,因此模板函式的實現,必須在「使用點」之前,因此模板庫只能通過標頭檔案庫的形式來提供。
c++中,template
2樓:匿名使用者
這是模板的特化,有時候特化是必須的,編譯器會選取一個最匹配的型別生成這個類
3樓:匿名使用者
模版一種延緩資料型別的結構,你傳進int,那麼你模版的型別就是int,那的引數就是它的型別,這就是模版
4樓:匿名使用者
相當於泛型, 傳什麼型別 則他就會延續為該型別
c++模板template
5樓:匿名使用者
template
void fun(){}
fun(1);
fun(2.3);
編譯器就只會給你生成個void fun()和void fun(), 這種檢查是在編譯時期進行的.
比如用這一特性來搞個compile time check, 也叫static check, 比如morden c++ design上的:
template
struct static_assert;
template <>
struct static_assert{};
就可以實現編譯期間的assert;
static_assert<1 > 2>();
static_assert<2 < 3>();
摸板現在不支援實現和原型分開, 所以你只能把他們放在同一個檔案中, 比如:
template
void fun();
template
void fun()
或者直接
template
void fun()
我直接給你做個示範算了, 比如寫個求平方的模板:
// fun.cpp
template
t square(t x)
// main.cpp
#include
template
t square(t);
int main() 或者
// fun.h
template
t square(t x)
// main.cpp
#include
#include "fun.h"
int main()
template
6樓:閃閃紅紅星
不要,template表示模板類,定義的時候才需要加template,使用時只要node就行了
c++ 模板類 後面每個方法前的template
7樓:匿名使用者
c++集合了過程式
語言,通用語言,面嚮物件語言的眾多特點。模板是通用語言的特性,模板又叫引數化型別(parametrized types)。
模板的定義。以下是模板定義的一般格式:
template //class 也可以換成typename,後者是新來的。
void swap(any &a,any &b)
利用模板機制可以顯著減少冗餘資訊,能大幅度地節約程式**,進一步提高物件導向程式的可重用性和維護性。
在使用過程中,注意的問題:
(1)在template語句與函式模板定義語句之間不允許有別的語句。
template
int i; // 錯誤,不允許插入別的語句
t max(t x,t y)
(2)模板函式類似於過載函式,只不過它更嚴格一些。函式被過載的時候,在每個函式體內可以執行不同的動作。但同一個函式模板例項化後的所有模板函式都必須執行相同的動作。
例如,下面過載函式就不能用模板函式代替,因為它們所執行的動作是不同的。
void outdate(int i)
(3)在函式模板中允許使用多個型別引數。但是應當注意template定義部分的每個型別引數前必須有關鍵字class(typename)。
#inculde
template
void myfunc(type1 x,type2 y)
void fun(int i,char c)
{max(i,i); // 正確,呼叫max(int,int)
法律在人民生活中有什麼作用法律在社會生活中有什麼作用?
一 指引作用 法律的指引作用是指法律所具有的 能夠為人們提供一種既定的行為模式,從而引導人們在法律範圍內活動的作用。指引作用是法律最首要的作用。法律的首要目的並不在於制裁違法行為,而是在於引導人們正確的行為,合法地參與社會生活。二 作用 法律的 作用是指法律通過其規定,告知人們某種行為所具有的 為法...
C中的語句含義,在c中語句abab是什麼意思
氣泡排序,列如 陣列 a,b,c,d,e,f 兩個兩個的 比,最外層的for表示一個字元需比對的次數迴圈版,比如a分別跟每一個比對,需權要5次 a b,a c,a d,a e,a f 迴圈從0開始,到len 2 len為陣列的長度6 也就是可以迴圈5次。內層迴圈,用i 1,是為了第二次迴圈準備,因為...
在C語言中,int b30,1,2,3是什麼意
定義二維陣列變數b 預設的初始化值是b 3 所以最終的定義及初始化結果是b 2 3 c語言中b 3 3 0,1,2,0,1,2,0,1,2 是什麼意思 b 3 3 表示將 中的數值賦bai值給二維數du組zhib,9個數分別對應陣列b中9個元素。該語句可dao以寫為內b 3 3 這種寫法會顯得更直觀...