同样是函数,在 C 和 C++ 中有什么区别?
第一个返回值。
C语言的函数可以不写返回值类型,编译器会默认为返回 int。
但是 C++ 的函数,除了构造和析构这两个特殊的函数,必须得写上返回值,即使没有数据返回,也得写 void。
第二个函数名。
C语言的函数名绝对不能重名,除了用上 weak 这样的黑科技。同一个项目中,函数重名就会提示重复定义。
C++因为函数重载的存在,函数名可以相同,只要参数有区别就行。这两个函数构成重载的关系。
第三个函数参数。
C++中的函数参数花样比较多。
比如C++支持占位参数,参数可以只写个类型,但是没有名字,调用函数的时候,必须得给占位参数传参。
C语言原来不支持占位参数,不过就在最新的 C23 里面,也加入了占位参数,使用新一点的编译器,编译也能通过。
除了占位参数,还有默认参数,这个功能比占位参数更实用。
所谓默认参数,就是可以给函数参数提供一个默认值,调用函数的时候,如果没有提供实参,就会使用默认参数。
默认参数真的是个好东西。
第四个,函数模板。
这个概念也是只有C++才有。
对于函数体一样,只有类型不一样的函数,C++引入了模板机制,一个函数,可以用于多个场景。
第五个,函数指针。
C语言和C++都有函数指针的概念,只是 C++ 不仅有函数指针,还有函数对象。
这是两个完全不同的概念,一个是指针,一个是被重载过函数调用运算符的类。
在算法里面,都可以用来指定规则。
相比C语言的函数,C++要复杂很多。还有哪些区别,欢迎大家在评论区交流。
-
函数
+关注
关注
3文章
4406浏览量
66843 -
C++
+关注
关注
22文章
2122浏览量
76714
原文标题:同样是函数,在C和C++中有什么区别
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
C/C++条件编译
C++程序异常的处理机制
技能+1!如何在树莓派上使用C++控制GPIO?
C++ 与 Python:树莓派上哪种语言更优?
基于LockAI视觉识别模块:C++目标检测
CY7C65214和CY7C65211/3/5有什么区别?
主流的 MCU 开发语言为什么是 C 而不是 C++?
源代码加密、源代码防泄漏c/c++与git服务器开发环境
基于OpenHarmony标准系统的C++公共基础类库案例:ThreadPoll
Spire.XLS for C++组件说明

同样是函数,在C和C++中有什么区别
评论