#include
#include
#include
#include
#include
#include
#define debugvar(x) cout << #x << " = " << x << endl
using namespace std;
struct record
};class dataset
;dataset::dataset()
dataset::~dataset()
void dataset::insert(record r)
void dataset::delete(string name)
}void dataset::show(string filter)
}bool dataset::match_wildcard(const char *wild, const char* input)
wild++;
input++;
}while (*input)
mp = wild;
cp = input+1;
} else if ((*wild == *input) || (*wild == '?')) else
}
while (*wild == '*')
return !*wild;
}ostream & operator <<(ostream &os, const record &r)
ostream & operator <<(ostream &os, const dataset &ds)
//#include "dataset.h"
class querysystem
;char * querysystem::menu = ;
querysystem::querysystem()
int querysystem::getuserchoice()
void querysystem::displaymenu()
void querysystem::displayrecords()
void querysystem::insertrecord()
void querysystem::deleterecord()
void querysystem::findrecords()
string querysystem::getinput(string prompt)
void querysystem::execute(int i)
(this->*fptr[i])();}//
#include "stdafx.h"
#include "querysystem.h"
int _tmain(int argc, _tchar* argv)
c 再學習(巨集的基礎應用 常用的巨集)
在c 中,巨集是非常常用的,本篇部落格粗略地對巨集的使用和常用技巧做一些歸納。巨集的基礎用法 define maxinum 1000這樣我們就將maxinum定義為1000 注意巨集不需要分號 與此同時,正如之前介紹lamba的內容所說,我們在呼叫巨集時採取的是直接取代法,所以難免會出現問題 比如 ...
C 再學習系列 虛擬函式的4條規則
對於常規的基類函式來說 1 儘量使用非虛擬介面模式 nvi 讓介面函式成為非虛擬的.2 儘量讓虛擬函式成為私用的.3 只有當派生類需要呼叫基類對某個虛擬函式的實現時,才把虛擬函式宣告為保護的.4 基類的解構函式應該要麼為共有虛擬函式 要麼為保護虛擬函式.說明 1,2 兩條將虛共有介面的兩個職責進行了...
C 再學習系列 模板函式的自定義點
模板函式 在編寫模板時 可以通過一些顯示的自定義 對模板引數型別做一些必要的限制 選擇1 模板直接依賴於型別具有給定名字的合適的成員函式 則顯式要求引數 t提供該成員函式.選擇2 模板依賴於 型別具有給定名字的合適的非成員函式 則顯式的要求 t具有給定名字 簽名和語義的非成員函式.選擇3 模板依賴於...
C語言再學習 位 位元組 字 字長 字元的關係
參看 字 字長 位元組 位 位 bit 表示一個二進位制數碼0或1,是計算機儲存處理資訊的最基本 的單位。位元組 byte 一個位元組由8個位組成 它表示作為一個完整處理單位的8個二進位制數碼。現目前計算機上多使用 美國國家資訊交換標準 ascii編碼 由美國國家標準委員會制定 如 字元 a 的二進...
C 再學習系列 模板函式的自定義點
在編寫模板時 可以通過一些顯示的自定義 對模板引數型別做一些必要的限制 選擇 1 模板直接依賴於型別具有給定名字的合適的成員函式 則顯式要求引數t提供該成員函式 選擇 2 模板依賴於 型別具有給定名字的合適的非成員函式 則顯式的要求t 具有給定名字 簽名和語義的非成員函式 選擇 3 模板依賴於 型別...