1. 程式人生 > >opencv floodFill 漫水填充

opencv floodFill 漫水填充

可以看到,回撥函式通常和應用處於同一抽象層(因為傳入什麼樣的回撥函式是在應用級別決定的)。而回調就成了一個高層呼叫底層,底層再過頭來調用高層的過程。(我認為)這應該是回撥最早的應用之處,也是其得名如此的原因。

回撥機制的優勢

從上面的例子可以看出,回撥機制提供了非常大的靈活性。請注意,從現在開始,我們把圖中的庫函式改稱為中間函式了,這是因為回撥並不僅僅用在應用和庫之間。任何時候,只要想獲得類似於上面情況的靈活性,都可以利用回撥。

這種靈活性是怎麼實現的呢?乍看起來,回撥似乎只是函式間的呼叫,但仔細一琢磨,可以發現兩者之間的一個關鍵的不同:在回撥中,我們利用某種方式,把回撥函式像引數一樣傳入中間函式。可以這麼理解,在傳入一個回撥函式之前,中間函式是不完整的。換句話說,程式可以在執行時,通過登記不同的回撥函式,來決定、改變中間函式的行為。這就比簡單的函式呼叫要靈活太多了。