c++==与c的函数对比(4)

本文探讨了C与C++中不同的函数特性,重点介绍了内联函数、函数重载及带默认参数的函数。解释了这些特性如何提高程序效率,并通过示例展示了函数重载在C++中的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

与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链接起来

带默认参数的函数

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值