在C++,我們通常定義函數由名字(name),回傳類型(return type),參數列表(parameter list)和虛擬碼(pseudocode)所構成,而重載函數(overloading function)發生在當兩個函數以上使用相同名稱,卻有不一樣的參數列表,但是回傳類型在重載函數是不被考慮的.換句話說,C++編譯器決定使用哪個重載函數是根據傳入的引數(argument)符合哪一個參數列表來決定.
 |
圖一.類別YTDBConnection內成員函數未使用重載
|
在上一篇
QSqlTableModel與QTableView連結,圖一顯示YTDBConnection增加
成員函數getTable,在這裡我將getDataList和getTable改名為
getData,然後我的主程式時呼叫相同名稱的成員函數時,在圖二的程式碼第17列(row)由於傳入的引數是字串陣列,因此呼叫getData(QStringList &d_list)將從資料庫取值存到一維字串陣列裡.
 |
圖二.類別YTDBConnection成員函數使用重載getData
|
 |
圖三.在mainwindow.cpp使用重載函數 |
使用重載函數的優點
- 主要增加程式的可讀性,例如你要實作整數和浮點數的加法時,由於只是傳入的引數不同,使用相同名稱的函數比起使用不同的函數比較不會造成代碼混淆.
GitHub程式碼
留言
張貼留言