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知识梳理下,敬请期待.
随机推荐
- 01 vue子组件调用父组件中的方法
vue子组件,调用父组件中有三种方法哈!下面我们一起来讲解. 第一种使用 直接在子组件中通过this.$parent.父组件中的方法.来调用父组件的方法 第一种的缺点是不能够传递参数哈.它只能够调用方 ...
- js解析上传APK文件的详细信息
前端解析APK版本信息 需要安装这个包,可以使用cnpm或者npm npm 安装 app-info-parser ( 命令:npm install app-info-parser) APKInfo为i ...
- Element-UI中Drawer抽屉去除标题自带黑色边框
当点击事件drawer==true时,抽匣回打开 这时抽匣的标题会出现一个难看的蓝色边框,一会就会消失,但是好丑,所以要去掉它 解决方法 /deep/ :focus { outline: 0; } v ...
- 【K哥爬虫普法】大数据风控第一案:从魔蝎科技案件判决,看爬虫技术刑事边界
我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识, ...
- TienChin-课程管理-添加课程页面
course.js 将 activity 替换成 course. index.vue 这个 index.vue 是 course 文件夹下面的 index.vue 别弄错了. <template ...
- C++ Qt开发:数据库与TableView多组件联动
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍TableVi ...
- Java21 + SpringBoot3整合springdoc-openapi,自动生成在线接口文档,支持SpringSecurity和JWT认证方式
目录 前言 相关技术简介 OpenAPI Swagger Springfox springdoc swagger2与swagger3常用注解对比 实现步骤 引入maven依赖 修改配置文件 设置api ...
- 关于OJ中的输入格式的问题
输入:1 2 3 4 5 6 7 8 9 10 如上的输入,并未告诉我们终止条件,这种无上限输入的格式可以用以下格式读入 int main() { int S[100]; int i = 0; whi ...
- 在.NET Core下的机器学习--学习笔记
摘要 .NET Core 在机器学习的应用场景,除了 ML .NET 还会介绍一个非常棒的開源技術 TensorFlow .NET , Keras .NET. 讲师介绍 本课内容 人工智能介绍 ML ...
- IntelliJ IDEA 2023.1永久激活方法
IntelliJ IDEA永久激活方法 以下为破解教程: 注意:适用于IntelliJ IDEA 2021.3及其以上版本. 1. 清空IDEA以前的激活方法 大家可能在网上找了很多破解方法,比如修改 ...