模板作用域中的模板類(lèi)型引用。
template <class elemType> class ListItem;
template <class elemType> class List
{
public:
List<elemType> ();
~List();
private:
//ListItem *front;
//ListItem *end;
ListItem<elemType> *front;
ListItem<elemType> *end;
};
通常使用類(lèi)模板的名字的時(shí)候,必須指定模板形參。
但在類(lèi)本身的作用域內(nèi)部,可以使用類(lèi)模板的非限定名。
例如:List是List<elemType>的縮寫(xiě)。
但編譯器不會(huì)為類(lèi)中使用的其他的模板形參進(jìn)行這樣的推斷,因此必須指定類(lèi)型形參。
例如在List模板類(lèi)中使用ListItem模板類(lèi)時(shí),
ListItem *front 是錯(cuò)誤的
ListItem<elemType> *front 才是正確的。
posted @
2007-01-30 18:04 beyonlin 閱讀(598) |
評(píng)論 (0) |
編輯 收藏
#include<cstdio>
using namespace std;
template<class T, class T1, class T2>
T sum(T1 v1, T2 v2)
{
T value = v1 + v2;
return value;
}
int main()
{
int i = sum<int>(1,2.1);//調(diào)用正確。
return 0;
}
#include<cstdio>
using namespace std;
template<class T1, class T2, class T>
T sum(T1 v1, T2 v2)
{
T value = v1 + v2;
return value;
}
int main()
{
int j = sum<int>(1,2.1);//調(diào)用錯(cuò)誤。
int k = sum<int, int, double>(1,2.1);//調(diào)用正確。
return 0;
}
這兩種區(qū)別就在于template的定義:
template<class T, class T1, class T2>
與
template<class T1, class T2, class T>
顯式模板實(shí)參與對(duì)應(yīng)模板形參相匹配。
int j = sum<int>(1,2.1);
在這個(gè)調(diào)用中,int對(duì)應(yīng)的是T1, 沒(méi)有實(shí)參的類(lèi)型可以推斷T的類(lèi)型,故該調(diào)用是錯(cuò)誤的。
posted @
2007-01-22 23:50 beyonlin 閱讀(502) |
評(píng)論 (0) |
編輯 收藏
工具集成——編譯器集成例子(Java、Borland C++、Visual C++、Inno Setup、nsis)
在“工具→參數(shù)選擇→用戶工具”選項(xiàng)頁(yè)設(shè)置,設(shè)置步驟
① 設(shè)置組名稱(chēng),這里也可以不設(shè)置
② 單擊“添加工具→應(yīng)用程序”按鈕并進(jìn)行如下設(shè)置
③ 各種類(lèi)似"$(FilePath)"的參數(shù)可以在文本框右側(cè)的箭頭下拉菜單中獲取,具體含義如下
參數(shù) 描述
$(FilePath) 文件路徑(文件全名,含目錄和文件名)
$(FileDir) 文件目錄(不帶文件名)
$(FileName) 文件名(不帶目錄)
$(FileNameNoExt) 不帶擴(kuò)展名的文件名(不帶目錄)
$(FileExt) 擴(kuò)展名(當(dāng)前文件)
$(ProjectName) 工程名稱(chēng)(當(dāng)前工程名)
$(CurLine) 當(dāng)前行號(hào)(光標(biāo)位置處的行號(hào))
$(CurCol) 當(dāng)前列號(hào)(光標(biāo)位置處的列號(hào))
$(CurSel) 當(dāng)前文本(插入當(dāng)前選定文本)
$(CurWord) 當(dāng)前單詞(插入當(dāng)前單詞)
$(WindowList) 顯示當(dāng)前窗口列表并選擇特定文件
例子 1. Java 編譯器
菜單文本:Java 編譯器
命令:c:\java\bin\javac.exe
參數(shù):"$(FilePath)"
初始目錄:$(FileDir)
捕獲輸出:開(kāi)啟
要運(yùn)行已編譯的 Java 類(lèi)文件,你可以進(jìn)行如下設(shè)置:
菜單文本:Java
命令:c:\java\bin\java.exe
參數(shù):$(FileNameNoExt)
初始目錄:$(FileDir)
“命令”部分應(yīng)當(dāng)替換為實(shí)際的 Java 解釋器的路徑。
例子 2. Borland C++
菜單文本:Borland C
命令:c:\bc\bin\bcc32.exe
參數(shù):-Ic:\bc\include -Lc:\bc\lib -n$(FileDir) $(FilePath)
初始目錄:c:\bc\bin
捕獲輸出:開(kāi)啟
例子 3. Visual C++
菜單文本:Visual C++
命令:c:\msdev\vc98\bin\cl.exe
參數(shù):"$(FilePath)"
初始目錄:$(FileDir)
捕獲輸出:開(kāi)啟
例子 4. Inno Setup
菜單文本:編譯 Inno
命令:C:\Program Files\Inno Setup 4\Compil32.exe”
參數(shù):/cc $(FileName)
初始目錄:$(FileDir)
捕獲輸出:開(kāi)啟
例子 5. nsis
菜單文本:編譯 nsis
命令:C:\NSIS\makensis.exe
參數(shù):$(FileName)
初始目錄:$(FileDir)
捕獲輸出:開(kāi)啟
例子 6. C#
菜單文本:編譯 C#
命令:C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\csc.exe
參數(shù):$(FileName)
初始目錄:$(FileDir)
捕獲輸出:開(kāi)啟
在上面設(shè)置中,在命令部分,必須使用系統(tǒng)中各自編譯器的絕對(duì)路徑。
設(shè)置完畢后,你可以在“工具”菜單運(yùn)行對(duì)應(yīng)工具了,運(yùn)行結(jié)果會(huì)顯示在底部的輸出窗口,你也可以通過(guò)快捷鍵(Ctrl + 0-9) 運(yùn)行,或者是通過(guò)“用戶工具欄”的快捷按鈕運(yùn)行。
要運(yùn)行已編譯的 *.exe 文件,你可以進(jìn)行如下設(shè)置(此時(shí)可執(zhí)行文件需要和編譯文件同名):
菜單文本:Run
命令:$(FileNameNoExt)
參數(shù):
初始目錄:$(FileDir)
?
posted @
2006-12-17 01:00 beyonlin 閱讀(2703) |
評(píng)論 (0) |
編輯 收藏
泛型編程的兩個(gè)重要原則
模板的形參是const引用。
函數(shù)體中的測(cè)試只用<比較。
形參用const參數(shù)可以使函數(shù)運(yùn)行得更加快。
只用<比較對(duì)參數(shù)類(lèi)型的要求:只須支持<,但不必支持>。
posted @
2006-11-20 00:46 beyonlin 閱讀(277) |
評(píng)論 (0) |
編輯 收藏
這幾天為學(xué)院的Flash_Dv大賽做了一個(gè)投票系統(tǒng)。
為了盡量減少漏洞,我上網(wǎng)查了一下關(guān)于投票系統(tǒng)的漏洞問(wèn)題。
從下面的文章中我才知道驗(yàn)證碼的重要性:
http://blog.csdn.net/fiso/archive/2004/11/23/192855.aspx這是關(guān)于驗(yàn)證的一點(diǎn)介紹:
??????? 目前,不少網(wǎng)站為了防止用戶利用機(jī)器人自動(dòng)注冊(cè)、登錄、灌水,都采用了驗(yàn)證碼技術(shù)。所謂驗(yàn)證碼,就是將一串隨機(jī)產(chǎn)生的數(shù)字或符號(hào),生成一幅圖片,圖片里加上一些干擾象素(防止OCR),由用戶肉眼識(shí)別其中的驗(yàn)證碼信息,輸 入表單提交網(wǎng)站驗(yàn)證,驗(yàn)證成功后才能使用某項(xiàng)功能。
PHP代碼實(shí)現(xiàn):
<?php
//生成驗(yàn)證碼圖片
Header("Content-type: image/PNG");?
srand((double)microtime()*1000000);
$authnum=rand(1000,9999);
setcookie("authnum",$authnum);//用cookie保存生成四位整數(shù)
$im = imagecreate(62,20);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200);
imagefill($im,0,0,$gray);
//將四位整數(shù)驗(yàn)證碼繪入圖片
imagestring($im, 5, 10, 3, $authnum, $black);
for($i=0;$i<200;$i++) //加入干擾象素
{
??? $randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
??? imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);
}
ImagePNG($im);
ImageDestroy($im);
?>
posted @
2006-11-06 23:58 beyonlin 閱讀(673) |
評(píng)論 (0) |
編輯 收藏