在講述之前,請看c++的型別資訊系統:
typeid,sizeof,函式呼叫,模板特化
這幾個dd,或者隱藏地轉換c++的型別,或者直接得到型別資訊;前兩個就不說了,沒什麼可說的。現在說函式呼叫,請看如下**:
void foo(int a)
這樣的**也許天天在寫,但是,您有沒有注意到,我們在函式呼叫的時候:
foo(1);
沒有提供任何型別資訊,編譯器卻可以準確定位型別。
現在看如下**:
templatevoid foo(t a)
在這裡,看到沒有:
我們的t就直接獲取了引數a的型別資訊,在這裡,您可以對t進行任何的驗證!
現在我們可以繼續遞迴地使用別的函式來驗證a的別的操作資訊!!!
template
void foo(t a)
foo1(a);
foo2(a);
foo3(a);
什麼時候會終止呢,我想應該是:最小的操作子集,然後就可以很明確地知道,它到底在哪個函式裡面出錯了!!
問題是:
1.真的去執行一遍麼?
2.不同函式有不同的型別引數,是否需要為沒乙個型別資訊寫乙個不同的foon()函式【n不同!】。
答案:1.不去真執行,直接取函式位址就可以了。。。
2.把型別引數作為類成員。。寫乙個函式名稱就可以了~
這樣寫:
取驗證0的位址(){
取驗證1的位址;
取驗證2的位址;
既然都是驗證,我們就可以把它們封裝起來,封裝到不同的類裡面,由於函式與生俱來的缺陷:
封裝不足~~~~命名等一系列問題~~~~~
我們來一次封裝。。。這樣會更安全,更oo化!!!
template
class 模板0{
public:
void 驗證();
t a;
template
class 模板1
public:
void 驗證();
t a;
現在。。我們取不同命名空間裡面,驗證的位址就可以了。。
有人說:
用函式來表示一種型別,,,,,,,,,可不可以~~~~~~~~~
我無語~~~~~~~如果乙個型別有100個成員,
那麼,是不是要寫100個函式引數~~~~~~~~!!!!!!!!!!
用模板來進行型別檢查。
在講述之前,請看c 的型別資訊系統 typeid,sizeof,函式呼叫,模板特化 這幾個dd,或者隱藏地轉換c 的型別,或者直接得到型別資訊 前兩個就不說了,沒什麼可說的。現在說函式呼叫,請看如下 void foo int a 這樣的 也許天天在寫,但是,您有沒有注意到,我們在函式呼叫的時候 fo...
PropTypes進行型別檢查
注意 react.proptypes 已經廢棄,請使用 prop types 庫來代替.隨著應用日漸龐大,我們可以通過型別檢查捕獲大量錯誤.對於某些應用來說,你還可以使用 flow 或 typescript 這樣的 js 擴充套件來對整個應用程式進行型別檢查.然而即使不用他們,react 也有一些內...
用Python來檢查網域名稱HTTPS證書
import ssl,socket hostname www.qq.com c ssl.create default context s c.wrap socket socket.socket server hostname hostname s.connect hostname,443 cert ...