1樓:
2.1 函式模板的定義 不管它們的性質如何,所有的函式模板都具有同樣的基本格式: template 函式頭 函式體 例如,下面是一個2引數的模板的宣告:
template t max(t param1 ,t param2) 2.根據上面已定義的模板,編譯器將可生成下面的模板函式(都是對的,函式模板的目的就是函式過載): char * max(char * a, char * b) //模板函式1 int max(int a, int b) //模板函式2 double max(double a, double b) //模板函式2 等等。。。。。。。。。。。。。
2樓:匿名使用者
c語言中宣告和定義的區別
宣告(declaration )指定了一個變數的識別符號,用來描述變數的型別,是型別還是物件,或者函式等。宣告,用於編譯器(compiler)識別變數名所引用的實體。以下這些就是宣告:
extern int bar;
extern int g(int, int);
double f(int, double); // 對於函式宣告,extern關鍵字是可以省略的。
class foo; // 類的宣告,前面是不能加class的。
定義是對宣告的實現或者例項化。聯結器(linker)需要它(定義)來引用記憶體實體。與上面的宣告相應的定義如下:
int bar;
int g(int lhs, int rhs)
double f(int i, double d)
class foo {};// foo 這裡已經擁有自己的記憶體了,對照上面兩個函式,你就應該明白{}的用處了吧?
無論如何,定義 操作是隻能做一次的。如果你忘了定義一些你已經宣告過的變數,或者在某些地方被引用到的變數,那麼,聯結器linker是不知道這些引用該連線到那塊記憶體上的。然後就會報missing symbols 這樣的錯誤。
如果你定義變數超過一次,聯結器是不知道把引用和哪塊記憶體連線,然後就會報 duplicated symbols這樣的錯誤了。以上的symbols其實就是指定義後的變數名,也就是其標識的記憶體塊。
如果只是為了給編譯器提供引用標識,讓編譯器能夠知道有這個引用,能用這個引用來引用某個實體(但沒有為實體分配具體記憶體塊的過程)是為宣告。如果該操作能夠為引用指定一塊特定的記憶體,使得該引用能夠在link階段唯一正確地對應一塊記憶體,這樣的操作是為定義。
宣告是為了讓編譯器正確處理對宣告變數和函式的引用。定義是一個給變數分配記憶體的過程,或者是說明一個函式具體幹什麼用。
c++類别範本和函式模板的問題
3樓:匿名使用者
template
class mytmpclass
;template
mytmpclass::mytmpclass()template
void mytmpclass::set_information()template
void mytmpclass::display()int main()
{mytmpclassa;
a.set_information();
a.display();
cout<
你這樣試試。
4樓:★邂逅緣
template
type1 retun(identity&a);
還不支援du返回型別推
zhi導。
template
void identity::display()所有類dao外函式專實現identity後面需屬要跟上函式列表
關於c++類中帶函式模板的問題。。
5樓:匿名使用者
#include
using namespace std;
class student
};class manage }}
}};int main()
大概按照上面的來寫就可以了
6樓:匿名使用者
大致明白你的意思了。你是想用c++的stl標準的algorithm演算法來排序對吧?
如果是這樣,你得自己寫一個iterator類的東西來處理你的資料的。原因請參見stl演算法的使用方式。
C 函式遞迴問題,C 用函式遞迴求1 2 到n的問題
const int len 66 const int divs 6 void subdivide char ar,int low,int high,int level int tmain int argc,tchar ar return 0 將陣列ar子分,並在子分構成中不斷在子分的子串中間賦值為 ...
C語言相關問題
for i 0,j strlen str i 此程式段應該為字串逆序重放。將字元陣列第一個字元與最後一個互換.既str i 與str j 1 互換,10個字元換5次,9個字元換4次. 一破天 將字元陣列的前一半字元和後面的字元,以中間的字元為對稱軸進行交換 舉個例子 abcdefgh偶數長 則應該將...
c語言函式呼叫問題,C語言函式呼叫問題
優化了你的程式,問題好多,你自己研究一下吧 include int ds int x 真心看不懂你的ds 函式思想!有那麼複雜嗎?return x0 int yz int sum1 int main 如果不為顯示中間結果,這些都可以省。x0 ds x sum x x0 n printf 第 d次計算...