0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

学益得智能硬件 来源:未知 2024-11-29 10:25 次阅读

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

第一个返回值。

C语言的函数可以不写返回值类型,编译器会默认为返回 int。

但是 C++ 的函数,除了构造和析构这两个特殊的函数,必须得写上返回值,即使没有数据返回,也得写 void。

第二个函数名。

C语言的函数名绝对不能重名,除了用上 weak 这样的黑科技。同一个项目中,函数重名就会提示重复定义。

C++因为函数重载的存在,函数名可以相同,只要参数有区别就行。这两个函数构成重载的关系。

第三个函数参数。

C++中的函数参数花样比较多。

比如C++支持占位参数,参数可以只写个类型,但是没有名字,调用函数的时候,必须得给占位参数传参。

C语言原来不支持占位参数,不过就在最新的 C23 里面,也加入了占位参数,使用新一点的编译器,编译也能通过。

除了占位参数,还有默认参数,这个功能比占位参数更实用。

所谓默认参数,就是可以给函数参数提供一个默认值,调用函数的时候,如果没有提供实参,就会使用默认参数。

默认参数真的是个好东西。

第四个,函数模板。

这个概念也是只有C++才有。

对于函数体一样,只有类型不一样的函数,C++引入了模板机制,一个函数,可以用于多个场景。

第五个,函数指针。

C语言和C++都有函数指针的概念,只是 C++ 不仅有函数指针,还有函数对象。

这是两个完全不同的概念,一个是指针,一个是被重载过函数调用运算符的类。

算法里面,都可以用来指定规则。

相比C语言的函数,C++要复杂很多。还有哪些区别,欢迎大家在评论区交流。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4350

    浏览量

    63073
  • C++
    C++
    +关注

    关注

    22

    文章

    2114

    浏览量

    73948

原文标题:同样是函数,在C和C++中有什么区别

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Spire.XLS for C++组件说明

    开发人员可以快速地 C++ 平台上完成对 Excel 的各种编程操作,如根据模板创建新的 Excel 文档,编辑现有 Excel 文档,以及对 Excel 文档进行转换。 Spire.XLS
    的头像 发表于 01-14 09:40 193次阅读
    Spire.XLS for <b class='flag-5'>C++</b>组件说明

    C7000 C/C++优化指南用户手册

    电子发烧友网站提供《C7000 C/C++优化指南用户手册.pdf》资料免费下载
    发表于 11-09 15:00 0次下载
    <b class='flag-5'>C</b>7000 <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>优化指南用户手册

    TMS320C6000优化C/C++编译器v8.3.x

    电子发烧友网站提供《TMS320C6000优化C/C++编译器v8.3.x.pdf》资料免费下载
    发表于 11-01 09:35 0次下载
    TMS320<b class='flag-5'>C</b>6000优化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>编译器v8.3.x

    C语言和C++中结构体的区别

    同样是结构体,看看在C语言和C++中有什么区别
    的头像 发表于 10-30 15:11 375次阅读

    C7000优化C/C++编译器

    电子发烧友网站提供《C7000优化C/C++编译器.pdf》资料免费下载
    发表于 10-30 09:45 0次下载
    <b class='flag-5'>C</b>7000优化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>编译器

    ostreamc++中的用法

    ostream 是 C++ 标准库中一个非常重要的类,它位于 头文件中(实际上,更常见的是通过包含 头文件来间接包含 ,因为 包含了 和 )。 ostream 类及其派生类(如 std::cout
    的头像 发表于 09-20 15:11 1060次阅读

    ModusToolbox 3.2c代码中包含c++代码的正确步骤是什么?

    文件,但要在 main.c 中 #include 它们时 会导致构建失败。 将 main.c 重命名为 main.cpp 会导致标准 XMC 库函数(如 XMC_GPIO_SetMode)中出现许多错误。
    发表于 07-23 08:21

    C++语言基础知识

    电子发烧友网站提供《C++语言基础知识.pdf》资料免费下载
    发表于 07-19 10:58 8次下载

    C++中实现类似instanceof的方法

    函数,可实际上C++中没有。但是别着急,其实C++中有两种简单的方法可以实现类似Java中的instanceof的功能。
    的头像 发表于 07-18 10:16 693次阅读
    <b class='flag-5'>C++</b>中实现类似instanceof的方法

    FX2 CY7C68013A如何在C++环境中使用LoadEEPROM函数

    我使用的是 FX2 CY7C68013A 芯片。 我知道 CyUSB.NET 库中有我需要的 LoadEEPROM 函数。 请问如何在 C++ 环境而不是
    发表于 05-31 06:59

    C/C++代码动态测试工具VectorCAST插桩功能演示#代码动态测试 #C++

    C++代码
    北汇信息POLELINK
    发布于 :2024年04月18日 11:57:45

    鸿蒙OS开发实例:【Native C++

    使用DevEco Studio创建一个Native C++应用。应用采用Native C++模板,实现使用NAPI调用C标准库的功能。使用C标准库hypot接口计算两个给定数平方和的平
    的头像 发表于 04-14 11:43 2824次阅读
    鸿蒙OS开发实例:【Native <b class='flag-5'>C++</b>】

    使用 MISRA C++:2023® 避免基于范围的 for 循环中的错误

    在前两篇博客中,我们 向您介绍了新的 MISRA C++ 标准 和 C++ 的历史 。在这篇博客中,我们将仔细研究以 C++ 中 for 循环为中心的特定规则。
    的头像 发表于 03-28 13:53 887次阅读
    使用 MISRA <b class='flag-5'>C++</b>:2023® 避免基于范围的 for 循环中的错误

    同样是用STM32点亮一颗LED灯,寄存器和库有什么区别

    首先在创建工程的时候就比较麻烦,新建工程,起个名字,选择一个合适的芯片,新建main.c,然后随手来一个main函数
    的头像 发表于 03-14 16:52 898次阅读

    type-c和usb-c什么区别

    type-c和usb-c什么区别  Type-C 和 USB-C 都是指同一个连接标准,它使用统一的连接器,
    的头像 发表于 02-19 10:00 2923次阅读