C++深度剖析教程7 --- 函數重載分析(二)

– 作者 Allen 轉載請註明出處
微信公衆號「炫色Allen」(微信號:Allen5G)
在這裏插入圖片描述
c++是強類型的語言,類型來不得一點含糊

7-1:函數重載 vs 函數指針

#include <stdio.h>
#include <string.h>

int func(int x)
{
    return x;
}
int func(int a, int b)
{
    return a + b;
}
int func(const char* s)
{
    return strlen(s);
}
typedef int(*PFUNC)(int a);
int main(int argc, char *argv[])
{
    int c = 0;
    PFUNC p = func;
    c = p(1);   
    printf("c = %d\n", c);
    return 0;
}

實際輸出爲1,說明選擇標準是指針參數類型決定的

得出幾個結論
在這裏插入圖片描述

這樣的強制類型轉換才行,否則編譯器也不知道你說的是哪個

在這裏插入圖片描述
C到c++ 過度
爲的是c++調用之前C語言的函數(主要是很多庫是收費的,貿然不支持損失很大的)
在這裏插入圖片描述

那麼如何保證一段C代碼只會被C的方式編譯呢?

解決方式:

在這裏插入圖片描述
實驗7-2 C++調用C

#include <stdio.h>

#ifdef __cplusplus
extern "C" {
#endif

#include "add.h"

#ifdef __cplusplus
}
#endif

int main()
{
    int c = add(1, 2);
    
    printf("c = %d\n", c);
    
    return 0;
}

函數add.c

#include "add.h"

int add(int a, int b)

{
    return a + b;
}

add.h

int add(int a, int b);
簡化爲模板就是:只要在區域內添加就可以按照C的方式進行編譯

在這裏插入圖片描述

反推一下:C語言調用c++的函數

在這裏插入圖片描述
總結:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章