用模板來進行型別檢查。

2021-08-30 00:10:28 字數 1205 閱讀 5549

在講述之前,請看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 ...