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