温馨提示:本篇文章只讲解是什么,以及怎么用
基础概念
namespace的价值
7.1namespace的价值
在C/C++中,变量、函数和后⾯要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的是对标识符的名称进⾏本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的
多⽂件中可以定义同名namespace,他们会默认合并到⼀起,就像同⼀个namespace⼀样
总结
像个盒子,用于存放自己写的一些代码,避免和别人的一些代码起到冲突
C++输⼊&输出
<iostream>是InputOutputStream的缩写,是标准的输⼊、输出流库,定义了标准的输⼊、输
出对象。
i:input o: out
std::cin 是istream类的对象,它主要⾯向窄字符(narrowcharacters(oftypechar))的标准输
⼊流。
std::cout 是ostream类的对象,它主要⾯向窄字符的标准输出流。
std::endl 是⼀个函数,流插⼊输出时,相当于插⼊⼀个换⾏字符加刷新缓冲区。
<<是流插⼊运算符,>>是流提取运算符。(C语⾔还⽤这两个运算符做位运算左移/右移)
使⽤C++输⼊输出更⽅便,不需要像printf/scanf输⼊输出时那样,需要⼿动指定格式,C++的输⼊
输出可以⾃动识别变量类型(本质是通过函数重载实现的,这个以后会讲到),其实最重要的是
C++的流能更好的⽀持⾃定义类型对象的输⼊输出。
IO流涉及类和对象,运算符重载、继承等很多⾯向对象的知识,这些知识我们还没有讲解,所以这⾥我们只能简单认识⼀下C++IO流的⽤法,后⾯我们会有专⻔的⼀个章节来细节IO流库。
cout/cin/endl等都属于C++标准库(std),C++标准库都放在⼀个叫std(standard)的命名空间中,所以要通过命名空间的使⽤⽅式去⽤他们。
总结
第一种使用空间名::去调用函数
第二种使用using namespace 空间名;
缺省参数
缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时,如果没有指定实参
则采⽤该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省和半缺省参数。(有些地⽅把
缺省参数也叫默认参数)
全缺省就是全部形参给缺省值,半缺省就是部分形参给缺省值。C++规定半缺省参数必须从右往左
依次连续缺省,不能间隔跳跃给缺省值
总结
缺省值的使用:当创建的对象没有传值过来时,编译器会自动调用缺省值,全缺省是每一个缺省参数都有缺省值,半缺省是部分有缺省值(这一部分是连续的),一部分没有缺省值
函数重载
C++⽀持在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者类型不同。这样C++函数调⽤就表现出了多态⾏为,使⽤更灵活。C语⾔是不⽀持同⼀作⽤域中出现同名函数的
总结
函数重载:函数名相同,但参数的个数或类型不同,注意与函数的类型无关
引⽤的概念和定义
引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间,它和它引⽤的变量共⽤同⼀块内存空间。⽐如:水浒传中李逵,宋江叫"及时雨",江湖上⼈称"⿊旋⻛";林冲,外号豹⼦头;
总结
符号:&
类型& 引⽤别名=引⽤对象;
引⽤的特性
1. 引⽤在定义时必须初始化
2. ⼀个变量可以有多个引⽤
3. 引⽤⼀旦引⽤⼀个实体,再不能引⽤其他实体
const引⽤
可以引⽤⼀个const对象,但是必须⽤const引⽤。const引⽤也可以引⽤普通对象,因为对象的访
问权限在引⽤过程中可以缩⼩,但是不能放⼤
inline
⽤inline修饰的函数叫做内联函数,编译时C++编译器会在调⽤的地⽅展开内联函数,这样调⽤内联函数就需要建⽴栈帧了,就可以提⾼效率。
inline对于编译器⽽⾔只是⼀个建议,也就是说,你加了inline编译器也可以选择在调⽤的地⽅不展
开,不同编译器关于inline什么情况展开各不相同,因为C++标准没有规定这个。inline适⽤于频繁
调⽤的短⼩函数,对于递归函数,代码相对多⼀些的函数,加上inline也会被编译器忽略。
C++11中引⼊nullptr,nullptr是⼀个特殊的关键字,nullptr是⼀种特殊类型的字⾯量,它可以转换
成任意其他类型的指针类型。使⽤nullptr定义空指针可以避免类型转换的问题,因为nullptr只能被
隐式地转换为指针类型,⽽不能被转换为整数类型。
实操视频
视频链接:【c++入门】https://www.bilibili.com/video/BV1zBige5E5Y?vd_source=9c17c862acda0523093f08ff7dd82439
相信阅读完这篇文章的你一定可以理解它是什么,看完视频后你也会理解它怎么用,我们下期见