c++==与c的函数对比(4)
来源:互联网 发布:s7200plc密码破解软件 编辑:程序博客网 时间:2024/06/13 13:46
与c有区别的函数包括内联函数,函数重载,以及带默认参数函数之间的不同
内联函数:
在c语言中,利用的是宏函数来处理频繁使用的函数
宏函数:函数是宏定义
如:#define ADD (a,b) a+b
宏函数与自定义函数的区别:
宏函数:在预处理阶段就进行替换(用编译时间换取空间)
自定义函数:格式:int add(int a, int b),要分配空间,在编译时处理
在c++中,内联函数的格式就是在类型名前加上inline
实现方法:将函数的内容搬到主程序中,即不需要跳转,直接在主程序中顺序运行。以空间换取运行时间。
函数重载
定义:相同的作用域,如果两个函数名称相同,而参数不同,我们把它们称为重载overload
条件:函数名相同,但形参类型或者形参个数或者形参顺序不同或者三者都不同。注意:函数的返回值不能作为函数重载的区别。
在c语言中,只要根据函数名选择调用即可。
在c++中,会连上形参的类型,调用不了c的函数
//name managling的意思是名字改编
实例:
#include<iostream> usingnamespace std; void fun(inta, intb) { cout<<"int fun"<<endl; } void fun(doublea, doubleb) { cout<<"double fun"<<endl; } //extern "C"表示不进行名字改编,否则编译的时候重载函数编译器会对其名字进行改编 #ifdef__cpluscplus extern"C" { #endif void fun(inta) { cout<<"xxxx"<<endl; } void fun2(doublea) { cout<<"yyyy"<<endl; } #ifdef__cpluscplus } #endif int main(void) { fun(3,4); fun(3.3, 4.4); fun(3); return 0; }
用extern c,在c++编译器中调用c的函数,并制作静态库:
#ifdef __cplusplus//gcc -c main.c//把代码编译为目标文件形式ar rcs libadd.a main.o//使用工具ar创建一个存档文件g++ demo.cpp -/add -L.//编译程序时把程序和liberr.a链接起来
带默认参数的函数
0 0
- c++==与c的函数对比(4)
- c++==与c关键字的对比(2)
- [转]基于C++的OpenCV常用函数(与C对比)
- C与Object-c的简单对比
- c++==与c内存分配释放及引用的对比(3)
- 【Visual C++】PeekMessage与GetMessage的对比
- Objective-c 与java 的对比学习
- Swift与Objective-C的对比
- Java基础知识与C语言的对比
- C 与 JAVA 的对比分析
- C 与 JAVA 的对比分析
- (C++)unordered_map 与 map 的对比
- 标C与Uinx C下文件操作的对比
- objective C程序 C与OC的对比
- C语言之三种循环结构与递归函数的对比
- Erlang实现的矩阵相乘C=A*B单线程与并行多线程性能对比
- C与PHP速度对比
- C与PHP速度对比
- jmeter+ant之批量运行接口用例
- Gstreamer插件教程1.2—介绍(Introduction):基础(Foundations)
- nginx用socket连接php-fpm
- golang语法学习(一):变量,常量以及数据类型
- 使用jquery提交FormData数据
- c++==与c的函数对比(4)
- [Android开发] RxJava2之路二 - 基本使用方法
- GDB程序调试从初级到高级(四)
- 线性模型(二)-- 线性回归公式推导
- Mac如何安装lein
- 八大排序算法详解——插入排序
- poj 2229 Sumsets
- cacheColorHint,android:listSelector属性
- 2017年2月8日