動態繫結和靜態繫結的簡單理解

走路放慢腳步發表於2014-12-21

最近看《Effective ObjectveC》,講到”動態繫結”和”靜態繫結”,覺得挺好,記錄下來。

下面是一段靜態繫結的程式碼,在編譯期間就決定了在執行時所呼叫的函式。

C#import <stdio.h>
void printHello()
{
    printf("Hello World");
}
void printGoodbye()
{
    printf("Goodbye");
}
void doSth(int type)
{
    if (type == 0) {
        printHello();
    } else {
        printGoodbye();
    }
}

同樣的功能,用”動態繫結”來實現,要在執行時才確定呼叫的函式。

#import <stdio.h>
void printHello()
{
    printf("Hello World");
}
void printGoodbye()
{
    printf("Goodbye");
}
void doSth(int type)
{
    void (*func)();
    if (type == 0) {
        func = printHello;
    } else {
        func = printGoodbye;
    }
    func();
}

相關文章