4 . 函数升级(下)

来源:互联网 发布:阿基拉和拼字比赛 知乎 编辑:程序博客网 时间:2024/05/17 21:05

一. C++中的函数重载

  •          用同一个函数名定义不同的函数
  •           当函数名和不同的参数搭配时函数的含义不同

  

#include <stdio.h>#include <string.h>int func(int x){return x;}int func(int a, int b){return a+b;}int func(char *s){    returnstrlen (s);}int main(){    int c = 0;c = func(1);printf("c=%d\n",c);c = func(1,2);printf("c=%d\n",c);c = func("123344");printf("c=%d\n",c);return 0; }

 

     函数重载条件: 参数 个数,类型,顺序 不同    。

      当函数重载和默认参数在一起时,就会发声错误

  

int func(int a,int b,int c=0){return a+b+c;}int func(int a,int b){return a+b;}


   函数重载的准则:

              (1)将同名函数作为候选者

              (2)寻找可行的候选参数。


二 . C和C++的相互调用


       虽然C++编译器能够兼容C代码,但是C++编译器会优先使用C++的编译方式。

       利用extern可以强制C++编译器对C代码进行C方式编译。


//add.h#ifndef  _ADD_H_#define _ADD_H_int add(int a,int b);#endif


 

//add.c#include "add.h"int add(int a, int b){eturn a+b;}


 

//main.cpp#include <stdio.h>extern "C"{#include "add.h"};int main(){int c = add(1 , 2);printf("c=%d\n",c);return 0;}

  C++和C 的相互调用的统一方案:

  •  _cplusplus 是C++编译器内置的标准宏定义
  • 让C代码通过C编译器编译,也可以在C++编译器中以C的方式编译。

 


0 0