C++ 1

  • 函数重载
  • 缺省参数
    • 概念
    • 分类
      • 全缺省参数
      • 半缺省参数
  • 面试题
  • 命名空间
    • 目的
    • 定义命名空间
    • 命名空间的使用

函数重载

当两个函数拥有相同的名字时,在c语言中发现无法生成

但是在c++中却发现可以生成

这便是因为c++进行了函数的重载,即通过函数之间不同的参数来对函数进行区分
在自然语言中,一个词可以有多种含义,我们可以通过上下文来判断一个词的真实含义,即重载该词
再进行一次测试

依旧可以成功生成如果函数要进行重载,需要满足以下条件1、函数名相同,只有函数名相同才有重载一说2、必须参数列表不同同时参数列表不同又分为两种情况:①参数类型不同②参数个数不同为什么c语言不能重载?在我们敲完代码后,编译器会把代码进行改名例如在vs中将c++的代码中的fun(double)    改写为 ?fun@@YAHX@Zfun(int) 改写为 ?fun@@YANX@Z这样便显示出了两者的不同但是c的改写却统一为 _fun这便导致了两者一致,导致无法区分

缺省参数

概念

缺省参数是声明或定义函数时为函数的参数指定一个默认值。
在调用该函数是,如果没有指定该函数的值,便调用默认值,否则使用指定的实参。

分类

全缺省参数

即所有的参数都有默认值

半缺省参数

有的参数有默认值,有的参数没有
注意:1、半缺省参数必须从右往左依次来给出,不能间隔着给2、缺省参数不能在函数声明和定义中同时出现3、缺省值必须是常量或者全局变量4、c语言不支持(编译器不支持)

面试题

下面两个函数能形成函数重载吗?有问题吗或者声明情况下会出现问题?
void TestFunc(int a = 10)
{cout<<""void TestFunc(int)"<<endl;
}void TestFunc(int a)
{cout<<""void TestFunc(int)"<<endl;
}
结果显然是不能的
虽然表面上看起来一个有缺省值一个无缺省值,好像类型不相同
但实际上给参数时两者都可调用,导致无法选择调用哪个函数

命名空间

目的

在编程中,变量、函数和类都是大量存在的,这些变量、函数和类的名称都将存在于全局作用域当中,可能会导致很多冲突。
使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染。

定义命名空间

需要使用到namespace关键字,后跟命名空间的名字,随后接{},{}中为命名空间的成员
1、普通的命名空间
namespace N1 //N1为命名空间的名字
{//命名空间中的内容既可以定义变量,也可以定义函数int a;int Add(int left, int right){return left + right;}
}2、命名空间可以嵌套
namespace N2
{int a;int b;int Add(int left, int right){return left + right;}namespace N3{int c;}
}

命名空间的使用

1、加命名空间名称及作用域限定符
int main()
{//::为作用域解析符N1::Add(1, 2);return 0;
}int main()
{printf("%d\n", N1::b);return 0;
}2、使用using namespace命名空间名称引入(常用)
using namespace N2;
void main()
{Add(1, 2);
}3、使用using将命名空间中成员引入
using N2::b;
int main()
{printf("%d\n", b);return 0;
}

C++中函数重载、缺省参数及命名空间相关推荐

  1. C++中的糖果——缺省参数、内联函数、auto及nullptr关键字

    在C++中,相对于C语言,我们引入了许多新的概念,新的机制,它们的到来让我们的编程方便了不少,它并没有多么难理解,但是比较零碎,在我看来它就是一些加分项,故此,我们通常也将其称为C++中的糖果.下面就 ...

  2. C++中函数重载是如何实现

    函数重载的重要性不言而明,但是你知道C++中函数重载是如何实现的呢(虽然本文谈的是C++中函数重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题 1.声明/定义重载函数时,是如何解决命 ...

  3. C++之函数的缺省参数

    文章目录 前言 1.1 缺省参数概念 1.2 缺省参数分类 1.2.1 全缺省参数 1.2.2 半缺省参数 1.3 缺省参数使用注意事项 1.3.1 缺省参数必须从右往左依次来给出,不能间隔着设置缺省 ...

  4. c++学习笔记内联函数,函数重载,默认参数

    c++学习笔记内联函数,函数重载,默认参数 1 inline内联函数 C++中的const常量可以替代宏常数定义,如: const int A = 3;  #define A 3 C++中是否有解决 ...

  5. 【C++】C++中函数重载的理解

    我们在平时写代码中会用到几个函数但是他们的实现功能相同,但是有些细节却不同.例如:交换两个数的值其中包括(int, float,char,double)这些个类型.在C语言中我们是利用不同的函数名来加 ...

  6. [python] 函数的缺省参数和注意事项

    所谓缺省参数,在定义函数时,可以给某个参数指定一个默认值,具有默认值的参数就叫做缺省参数.调用函数时,如果没有传入缺省参数的值,则在函数内部使用定义函数时指定的参数默认值. 一.列表的排序方法明确缺省 ...

  7. python中函数重载和重写

    python 中的重载 在python中,具有重载的思想却没有重载的概念.所以有的人说python这么语言并不支持函数重载,有的人说python具有重载功能.实际上python编程中具有重载的目的缺无 ...

  8. C++ 语言学习 day01 (linux ),基本输入输出错误输出函数,名字空间的含义,内联函数,缺省参数,引用 ,、new操作符

    1.介绍c++ C++头文件风格 c++ 老风格:以.h结尾 是c语言风格  stdio.h  (尽量不) c++的转换风格: 去掉.h 在文件名前加c 例如#include <cstdio&g ...

  9. python调用自定义函数返回值的类型_生成dll文件以及python对DLL中函数的调用(参数类型以及返回值)...

    工具:VS2010    python2.7 (若使用的python是64位的,生成的dll也要使用x64) 系统:win7pro 64bit 首先,dll工程的创建以及dll文件的生成: new p ...

最新文章

  1. 虚数有物理意义吗?潘建伟范靖云团队最新量子力学研究同日登顶刊,引发基础数理热议...
  2. 高维数据使用npy格式保存
  3. C++中结构体、联合体、枚举的区别
  4. Elasticsearch的用例:灵活的查询缓存
  5. IntelliJ IDEA 修改缓存文件设置
  6. @WebService作用
  7. java线程池概念_Java 线程池概念、原理、简单实现
  8. 比 Hive 快 500 倍!大数据实时分析领域的黑马
  9. C语言库函数的哈希表使用方法
  10. DEVC++中的 “万能头文件” <bits/stdc++.h>
  11. iOS测试之移动App测试指南
  12. eviews计算covar_第7章 我国商业银行风险溢出效应的度量—基于GARCH-CoVaR模型
  13. Ubuntu系统查看显卡型号
  14. 深度优先搜索(DFS) 总结(算法+剪枝+优化总结)
  15. 计算机C语言好学吗?要是想自学应该怎么办?大学挂科赶紧恶补!
  16. 如何全面的理解APS自动排产系统?
  17. c++ strstr函数的实现
  18. 世上安得两全法,不负如来不负卿?
  19. 龙芯1D处理器用户手册
  20. jdbc cancel mysql_当执行Statement的cancel()之后发生了什么?

热门文章

  1. python降维——局部线性嵌入算法(LLE)
  2. Linux环境下利用句柄恢复Oracle误删除的数据文件
  3. 【转】Java计算文件的hash值
  4. loadrunner录制回放常见问题及解决办法
  5. delphi中Record 和Packed Record的区别
  6. 用rz,sz命令在xshell传输文件
  7. BAPI:BAPI_PRODORDCONF_CREATE_TT (TCODE:CO11N)
  8. android水印添加水印,android 增加背景文字 水印效果(仿钉钉)
  9. Java可变引用,Java – 对可变对象的易失性引用 – 对对象的字段的更新对所有线程都是可见的...
  10. kafka基础之介绍和分布式集群搭建