template
<
class
t>
class
test
}template
<
class
t>
void
func
(t a,
int len)
關鍵字template意味著我們要定義乙個模板,那定義模板肯定要有泛指型別,那麼泛指型別在**呢,t就是我們要的泛指型別,那為什麼t前面是關鍵字class而不是關鍵字typename呢?其實這裡的t確實是乙個泛指型別,這是c++發展的歷史原因,早期的c++直接復用class關鍵字來定義模板,但是泛型程式設計針對的不只是類型別,所以使用class關鍵字的使得**出現二義性,比如以下**
class
test_1
;class
test_2};
template
<
class
t>
void
test_class()
所以後面就出現了typename代替class定義泛指型別的做法**,typename的作用有兩個,第乙個是定義泛指型別,第二個是明確告訴編譯器緊跟其後的識別符號是乙個型別,所以使用typename定義就不會產生歧義**
int
func
(int i)
trycatch(.
..)
這裡的try…catch這樣寫是用於分隔正常功能**與異常處理**,可以直接將函式實現分隔為2部分
int
func
(int i,
int j)
throw
(int
)
函式宣告和定義時可以直接指定可能丟擲的異常型別,其實這裡的throw(int)是就是乙個異常宣告,說明只能丟擲int型別的異常,可以提高**可讀性
例子:
#include
#include
#include
using
namespace std;
char
fun(
char c)
throw
(char
)else
}void
test
(char i)
trycatch
(char i)
intmain
(int argc,
char
*ar**)
結果:
sice@sice:~$ ./a.out
exception: 0
fun(char c)l
奇奇怪怪書
main a,b 據說根據c99標準 main 隨便寫什麼都可以的樣子 gcc警告然後還是可以編譯int a b main 還是可以編譯就是 各種警告float a,b main 這個很好玩的樣子 退出for迴圈條件是 scanf f a 為假 不是很清楚,等下再研究scanf返回值 大概就是如果s...
奇奇怪怪的樹形dp
條件 1.整個圖是乙個樹狀的結構或者可以轉化為樹狀的結構。2.對於每個根節點的狀態,跟且僅跟所屬的孩子 大多為2個 有牽連關係。也就是說,父親對孩子沒有影響。3.狀態可以簡單的表示 4.有重疊子問題 可以沒有,不過那樣應用dp就沒有意義了 將樹轉換為二叉樹 樹中每個結點最多只有乙個最左邊的孩子 長子...
奇奇怪怪的知識 GMV
gmv gmv gross merchandise volume 在電商 定義裡面是 成交金額,這個實際指的是拍下訂單金額,包含付款和未付款的部分 gmv 1銷售額 2取消訂單金額 3拒收訂單金額 4退貨訂單金額 一般取消訂單與拒收訂單的分界點在訂單是否已經從庫房生產完畢,庫房還沒生產的訂單客戶取消...