当前位置: 首页 > news >正文

C++重点知识详解(命名空间,缺省参数,函数重载)

命名空间

  • 概念:命名空间是新定义的一个作用域,里面可以放函数,变量,定义类,主要作用是防止命名冲突
  • 实现:
    namespace _name
    {//成员1//成员2//...
    }

    可以嵌套使用

  • 成员使用:

    //1、使用时带域名
    域名::成员名//2、展开某个成员函数的域
    using 域名::成员名   //后续该成员在当前文件可直接使用//3、展开一整个域
    using namespace 域名;

缺省参数

  • 概念:是声明或定义函数时为函数的参数指定一个默认值,在调用该函数时,如果没有指定实参则采用该默认值,否则采用实参
  • 分类:
    • 全缺省参数:所有参数都带缺省值
    • 半缺省参数:部分参数带有缺省值(缺省值必须从右到左依次给出)
  • 注意事项
    • 1、半缺省参数只能从右往左依次给出,不能隔着给
    • 2、不能再声明和定义时同时给出 原因:两个位置如果给的不统一,编译器就不知道该用哪一个
    • 3、缺省参数必须是常用和全局变量,即在编译时要能够明确知道缺省值的内容
    • 4、C语言不支持

函数重载

  • 概念:相同的作用域,函数名相同,参数列表不同(参数列表不同的具体体现参数类型不同,个数不同,以及类型次序不同,与返回值类型无关)
  • 调用原理:函数名相同,编译器如何知道调那个函数?编译期间,编译器通过对实参类型进行推演,根据推演结果找对应的重载函数,如果存在且不会造成二义性则调用否则产出编译错误
    • 二义性产生原因:当有多个候选函数能通过不同的转换路径与调用实参匹配,且这些转换的优先级相同,编译器就无法确定哪一个函数是最佳匹配,二义性问题便由此产生
    • #include <iostream>
      using namespace std;void func(int x) { cout << "int" << endl; }
      void func(double x) { cout << "double" << endl; }int main() {short s = 10;  // 错误:二义性,short可转换为int或doublefunc(s);       // 编译错误:'func': 对重载函数的调用不明确return 0;
      }
  • 名字修饰规则:即编译器在编译时对函数名字的改写方式

    • C语言:在函数名字前增加下划线

    • C++:编译器将函数参数的类型放置在函数名字中,来保证函数重载时名字在底层的不同

  • 函数重载的调用是在编译期间确定的,这一过程被称为静态绑定(或静态多态)。编译器通过以下步骤来确定调用哪个重载函数:

    • 候选函数集识别:编译器会先找出所有同名函数,这些函数被称为候选函数
    • 可行函数筛选:从候选函数中筛选出参数数量和类型都合适的可行函数
    • 最佳匹配选择:依据实参与形参的匹配程度,从可行函数中选出最佳匹配的函数
    • 错误检查:如果找不到匹配的函数,或者有多个同等匹配的函数,编译器就会报错
http://www.lqws.cn/news/470395.html

相关文章:

  • 【舞蹈】编排:如何对齐拍子并让小节倍数随BPM递减
  • 两个python独立进程通信
  • Kubernetes 节点故障自愈方案:结合 Node Problem Detector 与自动化脚本
  • Java面试题025:一文深入了解数据库Redis(1)
  • 自定义 Hook:在 Vue3 中复用逻辑
  • Vue3 + TypeScript + xlsx 导入excel文件追踪数据流转详细记录(从原文件到目标数据)
  • Vue+spring boot前后端分离项目搭建---小白入门
  • 2025云服务器磁盘空间告急全解析:日志管理策略与智能扩容方案
  • 98. 验证二叉搜索树
  • Redis哨兵模式的学习(三)
  • React JSX语法
  • Hologres 使用 FDW
  • 「Linux文件及目录管理」输入输出重定向与管道
  • 网络编程及原理(六):三次握手、四次挥手
  • 什么是跨域问题?后端如何解决跨域问题?
  • 基于FPGA的白噪声信号发生器verilog实现,包含testbench和开发板硬件测试
  • ffmpeg(六):图片与视频互转命令
  • Python编程语言:2025年AI浪潮下的技术统治与学习红利
  • python的校园兼职系统
  • 分享两个可以一键生成sql server数据库 html格式巡检报告的脚本
  • 张之瞳全新单曲《6:30am》上线:以音乐定格青春遗憾中的诗意守望
  • Python 邻接表详细实现指南
  • 【软考高级系统架构论文】论面向服务架构设计及其应用
  • 【设计模式】6.原型模式
  • Git 使用手册:从入门到精通
  • 海光x86与Intel/AMD x86的差异解析:技术演进、架构博弈与未来之路
  • 通过 Lambda + API Gateway + 外部 API 实现。
  • 国产通用智能语音芯片品牌有哪些?
  • 树莓派无源蜂鸣器播放两首音乐实验指导书
  • python模块常用语法sys、traceback、QApplication