C++基本知识梳理
一.命名空间
概念:命名空间是新定义的一个作用域,里面可以放函数,变量,定义类等,主要用来防止命名冲突.
实现:namespace关键字 命名空间名字{ 命名空间成员 }
注意点:
1.命名空间可以嵌套使用,还可以使用inline关键字实现版本控制(inline修饰的命名空间默认展开到外一层命名空间).
2.同一工程中允许存在同名的命名空间,编译器最后会将相同名称的命名空间合并成一个.
二.缺省参数
概念:是声明或定义函数时为函数参数指定一个默认值,在调用该函数时,如果没有指定实参则采用该默认值.否则使用实参.
分类:
1.全缺省参数:所有参数都带有缺省值
2.半缺省参数:部分参数带有缺省值
注1:必须要从右向左依次给缺省值. 原因:如果声明函数func(int a = 0,int b = 0,int c);则定义时如果写fun(1,1),则编译器可能认为a=1,b=1,c未初始化.
注2:如果声明与定义分离,则不能在声明和定义中同时给出缺省值.原因:编译器不知道使用哪个
注3:缺省值必须是常量或全局变量或静态变量,即使用在编译时编译器能明确知道的内容
三.函数重载
特性:在相同作用域内,允许存在参数列表不同,函数名相同的多个函数.
条件:作用域相同,函数名相同,参数列表不同. 参数列表不同体现在 参数类型不同,个数不同以及类型次序不同.与返回值类型无关.
调用原理:编译期间,编译器通过对实参类型进行推导,根据推导的结果找到对应的重载函数,如果存在且不会造成二义性则调用,否则产生编译错误.
扩展:函数名修饰规则
C语言只是在函数名前加_,所以C语言不支持函数重载
C++比较复杂,编译器将函数参数的类型放到函数名字中,来保证函数重载时名字在底层的不同,因此能实现函数重载
注意:C++中 函数重载与返回值是否相同无关,理由同函数名修饰规则.
extern "C"的作用:在C++函数前使用extern修饰的话,表明告诉编译器,将该函数按照C的方式编译.(用途:在C++中使用C的库函数)
extern“C“关键字详解_extern c-CSDN博客
C++基本知识梳理的更多相关文章
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
- solr DIH 知识梳理
solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...
- Anliven - 基础知识梳理汇总 - 软件测试
基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳 ...
- [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型
引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...
- java基础知识梳理
java基础知识梳理 1 基本数据类型
- My way on Linux - 知识梳理计划
知识梳理计划图 近期计划把自己学习的工作中用到的Linux知识梳理下,敬请期待.
随机推荐
- 【第4个渗透靶机项目】 Tr0ll
每天都要加油哦! 0x00 信息搜集 首先找到一下靶机的ip,并扫描端口. 靶机和kali都是桥接. 那么先看一下kali的ifconfig信息. nmap -sn 192.168.0.0/24 ...
- 深入学习C#系列文章01---C#3 革新写代码的新方式
C#3 几乎所有的新特性都是为LINQ服务的,但他们单独使用也非常有用,接下来我们来简单看看C#3 的几个新特性吧. 一.自动实现的属性-----编写由字段直接支持的简单属性,不再显得臃肿不堪. 之前 ...
- SqlSugar常见问题汇总
1.已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭. There is already an open DataReader associated with this ...
- 2023中国高校计算机大数据挑战赛:论文学科分类baseline|清华主办
2023中国高校计算机大数据挑战赛:论文学科分类baseline|清华主办 官方地址:https://www.heywhale.com/home/competition 项目码源见文末 1.比赛介绍 ...
- C/C++ MinHook 库的使用技巧
在上面的各种Hook挂钩方式中,我们都是在手写封装代码,但这样的方式并不高效,真正的生产环境中我们必须使用现成的Hook库,常用的Hook库有免费开源的MinHook和商业的Detours Hook, ...
- Hadoop超详细讲解之单节点搭建
1 Hadoop介绍 Hadoop是Apache旗下的一个用java语言实现开源软件框架,是一个开发和运行处理大规模数据的软件平台.允许使用简单的编程模型在大量计算机集群上对大型数据集进行分布式处理. ...
- .NetCore 三种生命周期注入方式
.NetCore彻底诠释了"万物皆可注入"这句话的含义,在.NetCore中到处可见注入的使用.因此core中也提供了三种注入方式的使用,分别是: AddTransient:每次请 ...
- C++编译器的RVO和NRVO
1.说明 我一直记得返回对象的函数在调用时会有拷贝构造动作,但是最近实际测试却和记忆有些偏差,经查询是编译的问题 RVO: return value optimization NRVO: named ...
- 【C语言进阶】atoi函数的模拟实现【C的深度解剖】超详细的解释和注释
[C语言进阶]atoi函数的模拟实现[C的深度解剖]超详细的解释和注释 那么这里博主先安利一下一些干货满满的专栏啦! 作者: #西城s 这是我的主页:#西城s 在食用这篇博客之前,博主在这里介绍一下其 ...
- 小知识:Oracle RAC添加服务名实现单节点访问
环境:Oracle 11.2.0.4 RAC(2 nodes) 1.查看RAC IP配置信息 2.添加服务名并启动服务 3.停止服务并删除服务名 1.查看RAC IP配置信息 我们先查看下环境的IP分 ...