templateltclasstgt這種用法在c中有嗎?什麼意思

2021-05-31 06:51:58 字數 2764 閱讀 8587

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是定義了一個模版t,那template是什麼意思

2樓:匿名使用者

這是模板的特化,有時候特化是必須的,編譯器會選取一個最匹配的型別生成這個類

3樓:匿名使用者

模版一種延緩資料型別的結構,你傳進int,那麼你模版的型別就是int,那的引數就是它的型別,這就是模版

4樓:匿名使用者

相當於泛型, 傳什麼型別 則他就會延續為該型別

c++模板template,t*怎麼用

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 這種寫法會顯得更直觀...